Change issue to improvement
This commit is contained in:
parent
22afde54e7
commit
34980949f3
|
@ -1129,22 +1129,46 @@ def test_safe_exists(tmp_path: Path) -> None:
|
||||||
class TestNamespacePackages:
|
class TestNamespacePackages:
|
||||||
"""Test import_path support when importing from properly namespace packages."""
|
"""Test import_path support when importing from properly namespace packages."""
|
||||||
|
|
||||||
|
@pytest.fixture(autouse=True)
|
||||||
|
def setup_imports_tracking(self, monkeypatch: MonkeyPatch) -> None:
|
||||||
|
monkeypatch.setattr(sys, "pytest_namespace_packages_test", [], raising=False)
|
||||||
|
|
||||||
def setup_directories(
|
def setup_directories(
|
||||||
self, tmp_path: Path, monkeypatch: Optional[MonkeyPatch], pytester: Pytester
|
self, tmp_path: Path, monkeypatch: Optional[MonkeyPatch], pytester: Pytester
|
||||||
) -> Tuple[Path, Path]:
|
) -> Tuple[Path, Path]:
|
||||||
|
# Use a code to guard against modules being imported more than once.
|
||||||
|
# This is a safeguard in case future changes break this invariant.
|
||||||
|
code = dedent(
|
||||||
|
"""
|
||||||
|
import sys
|
||||||
|
imported = getattr(sys, "pytest_namespace_packages_test", [])
|
||||||
|
assert __name__ not in imported, f"{__name__} already imported"
|
||||||
|
imported.append(__name__)
|
||||||
|
sys.pytest_namespace_packages_test = imported
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
# Set up a namespace package "com.company", containing
|
# Set up a namespace package "com.company", containing
|
||||||
# two subpackages, "app" and "calc".
|
# two subpackages, "app" and "calc".
|
||||||
(tmp_path / "src/dist1/com/company/app/core").mkdir(parents=True)
|
(tmp_path / "src/dist1/com/company/app/core").mkdir(parents=True)
|
||||||
(tmp_path / "src/dist1/com/company/app/__init__.py").touch()
|
(tmp_path / "src/dist1/com/company/app/__init__.py").write_text(
|
||||||
(tmp_path / "src/dist1/com/company/app/core/__init__.py").touch()
|
code, encoding="UTF-8"
|
||||||
|
)
|
||||||
|
(tmp_path / "src/dist1/com/company/app/core/__init__.py").write_text(
|
||||||
|
code, encoding="UTF-8"
|
||||||
|
)
|
||||||
models_py = tmp_path / "src/dist1/com/company/app/core/models.py"
|
models_py = tmp_path / "src/dist1/com/company/app/core/models.py"
|
||||||
models_py.touch()
|
models_py.touch()
|
||||||
|
|
||||||
(tmp_path / "src/dist2/com/company/calc/algo").mkdir(parents=True)
|
(tmp_path / "src/dist2/com/company/calc/algo").mkdir(parents=True)
|
||||||
(tmp_path / "src/dist2/com/company/calc/__init__.py").touch()
|
(tmp_path / "src/dist2/com/company/calc/__init__.py").write_text(
|
||||||
(tmp_path / "src/dist2/com/company/calc/algo/__init__.py").touch()
|
code, encoding="UTF-8"
|
||||||
|
)
|
||||||
|
(tmp_path / "src/dist2/com/company/calc/algo/__init__.py").write_text(
|
||||||
|
code, encoding="UTF-8"
|
||||||
|
)
|
||||||
algorithms_py = tmp_path / "src/dist2/com/company/calc/algo/algorithms.py"
|
algorithms_py = tmp_path / "src/dist2/com/company/calc/algo/algorithms.py"
|
||||||
algorithms_py.touch()
|
algorithms_py.write_text(code, encoding="UTF-8")
|
||||||
|
|
||||||
# Validate the namespace package by importing it in a Python subprocess.
|
# Validate the namespace package by importing it in a Python subprocess.
|
||||||
r = validate_namespace_package(
|
r = validate_namespace_package(
|
||||||
|
|
Loading…
Reference in New Issue