diff --git a/tests/conftest.py b/tests/conftest.py index 8d61378..a5c82aa 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -8,7 +8,41 @@ responsible for binding models to its own in-memory database. import os +import psycopg2 +import pytest + os.environ["DATABASE_TYPE"] = "postgresql" # Provide dummy credentials so PooledPostgresqlDatabase can be instantiated # without raising a configuration error (it will not actually be used). os.environ.setdefault("POSTGRES_PASSWORD", "test-dummy") + + +@pytest.fixture(scope="session") +def pg_conn(): + """Live PostgreSQL connection for integration tests. + + Requires POSTGRES_HOST to be set; runs the migration before yielding the + connection so that all integration tests start from a migrated schema. + The connection is rolled back and closed at session teardown so that the + migration is not persisted to the dev database between test runs. + """ + conn = psycopg2.connect( + host=os.environ["POSTGRES_HOST"], + dbname=os.environ.get("POSTGRES_DB", "pd_master"), + user=os.environ.get("POSTGRES_USER", "pd_admin"), + password=os.environ["POSTGRES_PASSWORD"], + port=int(os.environ.get("POSTGRES_PORT", "5432")), + ) + conn.autocommit = False + migration_path = os.path.join( + os.path.dirname(__file__), + "..", + "migrations", + "2026-03-12_add_evolution_tables.sql", + ) + with open(migration_path) as fh: + conn.cursor().execute(fh.read()) + conn.commit() + yield conn + conn.rollback() + conn.close()