Skip to content

Commit 421522b

Browse files
committed
Fix ProgrammingError in CI mode
1 parent 916724a commit 421522b

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

api/conftest.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
)
1515
from common.projects.permissions import VIEW_PROJECT
1616
from django.contrib.contenttypes.models import ContentType
17+
from django.contrib.postgres.signals import (
18+
register_type_handlers,
19+
)
1720
from django.core.cache import caches
1821
from django.db.backends.base.creation import TEST_DATABASE_PREFIX
1922
from django.test.utils import setup_databases
@@ -22,6 +25,7 @@
2225
from mypy_boto3_dynamodb.service_resource import DynamoDBServiceResource, Table
2326
from pyfakefs.fake_filesystem import FakeFilesystem
2427
from pytest import FixtureRequest
28+
from pytest_django import DjangoDbBlocker
2529
from pytest_django.fixtures import SettingsWrapper
2630
from pytest_django.plugin import blocking_manager_key
2731
from pytest_mock import MockerFixture
@@ -178,6 +182,23 @@ def django_db_setup(request: pytest.FixtureRequest) -> None:
178182
db_settings["NAME"] = test_db_name
179183

180184

185+
@pytest.fixture
186+
def db(
187+
request: pytest.FixtureRequest,
188+
django_db_blocker: DjangoDbBlocker,
189+
db: None,
190+
) -> None:
191+
if request.config.option.ci:
192+
from django.db import connections
193+
194+
# Ensure psycopg type handlers are registered.
195+
# This is necessary for tests that involve `HStoreField`.
196+
for connection in connections.all():
197+
if connection.vendor == "postgresql":
198+
with django_db_blocker.unblock():
199+
register_type_handlers(connection)
200+
201+
181202
@pytest.fixture(autouse=True)
182203
def restrict_http_requests(monkeypatch: pytest.MonkeyPatch) -> None:
183204
"""

0 commit comments

Comments
 (0)