diff --git a/runtests.py b/runtests.py index cdf06d423ad36fc1fca652b0a442c8446340f0fb..337fd659dc4227b11856fd653c953edb29454975 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 0000000000000000000000000000000000000000..c7d3ddd87620e1956bfdf5822e818ce7e0f928e6 --- /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