From e914b27b67876afbb7ef2efe22e2454171b5692b Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Sat, 16 Mar 2013 23:06:43 +0100 Subject: [PATCH] add test for absolute imports --- runtests.py | 1 + tests/run/absolute_import.srctree | 59 +++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 tests/run/absolute_import.srctree diff --git a/runtests.py b/runtests.py index cdf06d423..337fd659d 100755 --- a/runtests.py +++ b/runtests.py @@ -201,6 +201,7 @@ VER_DEP_MODULES = { 'run.yield_from_pep380', # GeneratorExit 'run.generator_frame_cycle', # yield in try-finally 'run.generator_expressions_in_class', + 'run.absolute_import', 'run.relativeimport_T542', 'run.relativeimport_star_T542', 'run.initial_file_path', # relative import diff --git a/tests/run/absolute_import.srctree b/tests/run/absolute_import.srctree new file mode 100644 index 000000000..c7d3ddd87 --- /dev/null +++ b/tests/run/absolute_import.srctree @@ -0,0 +1,59 @@ +PYTHON setup.py build_ext --inplace +PYTHON -c "import pkg.my_test_module" +PYTHON -c "import pkg.b; pkg.b.test_reimport()" +PYTHON -c "import pkg.c; pkg.c.test_reimport()" + +######## setup.py ######## + +from Cython.Build.Dependencies import cythonize +from distutils.core import setup + +setup( + ext_modules = cythonize("**/*.pyx"), + ) + +######## pkg/__init__.py ######## + +######## pkg/a_module.pyx ######## + +######## pkg/my_test_module.pyx ######## + +import sys +from . import a_module +assert a_module in sys.modules.values(), list(sys.modules) +assert sys.modules['pkg.a_module'] is a_module, list(sys.modules) + +######## pkg/b.pyx ######## + +from __future__ import absolute_import + +import sys +try: + import my_test_module +except ImportError: + pass +else: + assert "expected ImportError on absolute import" + +import pkg.my_test_module + +assert pkg.my_test_module in sys.modules.values(), list(sys.modules) +assert sys.modules['pkg.my_test_module'] is pkg.my_test_module, list(sys.modules) + +def test_reimport(): + import pkg.my_test_module as mod + assert pkg.my_test_module is mod + +######## pkg/c.pyx ######## + +from __future__ import absolute_import + +import sys +from pkg import my_test_module + +assert my_test_module in sys.modules.values(), list(sys.modules) +assert sys.modules['pkg.my_test_module'] is my_test_module, list(sys.modules) + +def test_reimport(): + from pkg import my_test_module as mod + assert my_test_module is mod -- 2.25.1