Add test for more complex ns with no __init__ file
This commit is contained in:
parent
09643d9eba
commit
6e5d2e13bc
|
@ -1324,3 +1324,40 @@ class TestNamespacePackages:
|
||||||
assert _is_namespace_package(path) is False
|
assert _is_namespace_package(path) is False
|
||||||
|
|
||||||
assert _is_namespace_package(Path()) is False
|
assert _is_namespace_package(Path()) is False
|
||||||
|
|
||||||
|
def test_intermediate_init_file(
|
||||||
|
self, pytester: Pytester, tmp_path: Path, monkeypatch: MonkeyPatch
|
||||||
|
) -> None:
|
||||||
|
(tmp_path / "src/dist1/ns/b/app/bar/test").mkdir(parents=True)
|
||||||
|
# (tmp_path / "src/dist1/ns/b/app/bar/test/__init__.py").touch()
|
||||||
|
(tmp_path / "src/dist1/ns/b/app/bar/m.py").touch()
|
||||||
|
|
||||||
|
# The presence of this __init__.py is not a problem, ns.b.app is still part of the namespace package.
|
||||||
|
(tmp_path / "src/dist1/ns/b/app/__init__.py").touch()
|
||||||
|
|
||||||
|
(tmp_path / "src/dist2/ns/a/core/foo/test").mkdir(parents=True)
|
||||||
|
# (tmp_path / "src/dist2/ns/a/core/foo/test/__init__.py").touch()
|
||||||
|
(tmp_path / "src/dist2/ns/a/core/foo/m.py").touch()
|
||||||
|
|
||||||
|
# Validate the namespace package by importing it in a Python subprocess.
|
||||||
|
r = pytester.runpython_c(
|
||||||
|
dedent(
|
||||||
|
f"""
|
||||||
|
import sys
|
||||||
|
sys.path.append(r{str(tmp_path / "src/dist1")!r})
|
||||||
|
sys.path.append(r{str(tmp_path / "src/dist2")!r})
|
||||||
|
import ns.b.app.bar.m
|
||||||
|
import ns.a.core.foo.m
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
assert r.ret == 0
|
||||||
|
monkeypatch.syspath_prepend(tmp_path / "src/dist1")
|
||||||
|
monkeypatch.syspath_prepend(tmp_path / "src/dist2")
|
||||||
|
|
||||||
|
assert resolve_pkg_root_and_module_name(
|
||||||
|
tmp_path / "src/dist1/ns/b/app/bar/m.py", consider_namespace_packages=True
|
||||||
|
) == (tmp_path / "src/dist1", "ns.b.app.bar.m")
|
||||||
|
assert resolve_pkg_root_and_module_name(
|
||||||
|
tmp_path / "src/dist2/ns/a/core/foo/m.py", consider_namespace_packages=True
|
||||||
|
) == (tmp_path / "src/dist2", "ns.a.core.foo.m")
|
||||||
|
|
Loading…
Reference in New Issue