From 3af214b65c56192bceec0521b9829d37d6372f8e Mon Sep 17 00:00:00 2001 From: Cristian Le Date: Tue, 24 Oct 2023 10:24:19 +0200 Subject: [PATCH] Add test case for python package navigations --- .../packages/navigate_editable/pyproject.toml | 2 +- .../python/py_pkg/__init__.py | 0 .../python/py_pkg/py1_pkg/__init__.py | 3 ++ .../python/py_pkg/py1_pkg/py1_module.py | 4 +++ .../python/py_pkg/py2_pkg/__init__.py | 6 ++++ .../python/py_pkg/py2_pkg/py2_module.py | 2 ++ tests/test_editable.py | 32 +++++++++++++++++++ 7 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 tests/packages/navigate_editable/python/py_pkg/__init__.py create mode 100644 tests/packages/navigate_editable/python/py_pkg/py1_pkg/__init__.py create mode 100644 tests/packages/navigate_editable/python/py_pkg/py1_pkg/py1_module.py create mode 100644 tests/packages/navigate_editable/python/py_pkg/py2_pkg/__init__.py create mode 100644 tests/packages/navigate_editable/python/py_pkg/py2_pkg/py2_module.py diff --git a/tests/packages/navigate_editable/pyproject.toml b/tests/packages/navigate_editable/pyproject.toml index abaef4e8..d430f90d 100644 --- a/tests/packages/navigate_editable/pyproject.toml +++ b/tests/packages/navigate_editable/pyproject.toml @@ -10,4 +10,4 @@ dependencies = [ ] [tool.scikit-build] -wheel.packages = ["python/shared_pkg"] +wheel.packages = ["python/shared_pkg", "python/py_pkg"] diff --git a/tests/packages/navigate_editable/python/py_pkg/__init__.py b/tests/packages/navigate_editable/python/py_pkg/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/packages/navigate_editable/python/py_pkg/py1_pkg/__init__.py b/tests/packages/navigate_editable/python/py_pkg/py1_pkg/__init__.py new file mode 100644 index 00000000..2b4fbfc6 --- /dev/null +++ b/tests/packages/navigate_editable/python/py_pkg/py1_pkg/__init__.py @@ -0,0 +1,3 @@ +from ..py2_pkg import py2_method_a + +__all__ = ["py2_method_a"] diff --git a/tests/packages/navigate_editable/python/py_pkg/py1_pkg/py1_module.py b/tests/packages/navigate_editable/python/py_pkg/py1_pkg/py1_module.py new file mode 100644 index 00000000..c214ba98 --- /dev/null +++ b/tests/packages/navigate_editable/python/py_pkg/py1_pkg/py1_module.py @@ -0,0 +1,4 @@ +from ..py2_pkg import py2_method_b +from ..py2_pkg.py2_module import py2_method_c + +__all__ = ["py2_method_b", "py2_method_c"] diff --git a/tests/packages/navigate_editable/python/py_pkg/py2_pkg/__init__.py b/tests/packages/navigate_editable/python/py_pkg/py2_pkg/__init__.py new file mode 100644 index 00000000..d1d1bfbb --- /dev/null +++ b/tests/packages/navigate_editable/python/py_pkg/py2_pkg/__init__.py @@ -0,0 +1,6 @@ +def py2_method_a(): + print("py2_method_a") + + +def py2_method_b(): + print("py2_method_b") diff --git a/tests/packages/navigate_editable/python/py_pkg/py2_pkg/py2_module.py b/tests/packages/navigate_editable/python/py_pkg/py2_pkg/py2_module.py new file mode 100644 index 00000000..ada6f468 --- /dev/null +++ b/tests/packages/navigate_editable/python/py_pkg/py2_pkg/py2_module.py @@ -0,0 +1,2 @@ +def py2_method_c(): + print("py2_method_c") diff --git a/tests/test_editable.py b/tests/test_editable.py index 1b3805d2..1d2cb2b0 100644 --- a/tests/test_editable.py +++ b/tests/test_editable.py @@ -48,3 +48,35 @@ def test_navigate_editable(isolated, isolate, package): value = isolated.execute("import shared_pkg; shared_pkg.read_c_generated_txt()") assert value == "Some_value_C" + + +@pytest.mark.compile() +@pytest.mark.configure() +@pytest.mark.integration() +@pytest.mark.parametrize("isolate", [True, False], ids=["isolated", "notisolated"]) +@pytest.mark.usefixtures("navigate_editable") +def test_navigate_editable2(isolated, isolate): + isolate_args = ["--no-build-isolation"] if not isolate else [] + isolated.install("pip>=23") + if not isolate: + isolated.install("scikit-build-core[pyproject]") + + isolated.install( + "-v", "--config-settings=build-dir=build/{wheel_tag}", *isolate_args, "-e", "." + ) + + # Navigate from py_package to py_package + value = isolated.execute("import py_pkg.py1_pkg; py_pkg.py1_pkg.py2_method_a()") + assert value == "py2_method_a" + + # Navigate from py_package.py_module to py_package + value = isolated.execute( + "import py_pkg.py1_pkg.py1_module; py_pkg.py1_pkg.py1_module.py2_method_b()" + ) + assert value == "py2_method_b" + + # Navigate from py_package.py_module to py_package.py_module + value = isolated.execute( + "import py_pkg.py1_pkg.py1_module; py_pkg.py1_pkg.py1_module.py2_method_c()" + ) + assert value == "py2_method_c"