From f5953906c1e504dc29f3147682757c9edc33901a Mon Sep 17 00:00:00 2001 From: Brian Bjarke Jensen Date: Tue, 30 Jun 2026 16:05:41 +0200 Subject: [PATCH] Fix optional-deps import test for full-suite execution. Run the base-import assertion in a subprocess so integration tests do not pollute sys.modules. Co-authored-by: Cursor --- tests/unit/optional_dependencies_test.py | 27 +++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/tests/unit/optional_dependencies_test.py b/tests/unit/optional_dependencies_test.py index 92f36d3..f67d64b 100644 --- a/tests/unit/optional_dependencies_test.py +++ b/tests/unit/optional_dependencies_test.py @@ -4,15 +4,19 @@ from __future__ import annotations import builtins import importlib +import os +import subprocess import sys from collections.abc import Callable, Mapping, Sequence +from pathlib import Path from types import ModuleType from unittest.mock import patch import pytest import python_repositories -from python_repositories import JsonRepositoryInterface + +_ROOT = Path(__file__).resolve().parents[2] def _block_backend_import(blocked_prefix: str) -> Callable[..., ModuleType]: @@ -33,10 +37,23 @@ def _block_backend_import(blocked_prefix: str) -> Callable[..., ModuleType]: def test_base_import_does_not_load_adapters() -> None: - """Interfaces are available without loading adapter modules.""" - assert JsonRepositoryInterface is not None - assert "python_repositories.adapters.redis_adapter" not in sys.modules - assert "python_repositories.adapters.minio_adapter" not in sys.modules + """Base package import does not eagerly load backend adapter modules.""" + script = """ +import sys +from python_repositories import JsonRepositoryInterface + +assert JsonRepositoryInterface is not None +assert "python_repositories.adapters.redis_adapter" not in sys.modules +assert "python_repositories.adapters.minio_adapter" not in sys.modules +""" + result = subprocess.run( + [sys.executable, "-c", script], + cwd=_ROOT, + env={**os.environ, "PYTHONPATH": str(_ROOT)}, + capture_output=True, + text=True, + ) + assert result.returncode == 0, result.stderr or result.stdout def test_lazy_adapter_load_succeeds_when_extra_present() -> None: