diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2016-12-11 15:20:32 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2016-12-11 15:32:28 -0500 |
commit | 3dd506f01d48b98aeea9bdbca0105d4c7d8ad538 (patch) | |
tree | 07b3933bd8651b7ac184736f2a3463a483e4e7b5 /setuptools/tests/test_namespaces.py | |
parent | 2268fb9887cfea2e28e156bd2c8314132261402f (diff) | |
parent | 5c9406987aacf17d9c004aa1456797e0044306e5 (diff) | |
download | python-setuptools-git-develop-nspkg-always.tar.gz |
Merge branch 'master' into develop-nspkg-alwaysdevelop-nspkg-always
Diffstat (limited to 'setuptools/tests/test_namespaces.py')
-rw-r--r-- | setuptools/tests/test_namespaces.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/setuptools/tests/test_namespaces.py b/setuptools/tests/test_namespaces.py new file mode 100644 index 00000000..28c5e9de --- /dev/null +++ b/setuptools/tests/test_namespaces.py @@ -0,0 +1,52 @@ +from __future__ import absolute_import, unicode_literals + +import os +import sys +import subprocess + +import pytest + +from . import namespaces + + +class TestNamespaces: + + @pytest.mark.xfail(sys.version_info < (3, 3), + reason="Requires PEP 420") + @pytest.mark.skipif(bool(os.environ.get("APPVEYOR")), + reason="https://github.com/pypa/setuptools/issues/851") + def test_mixed_site_and_non_site(self, tmpdir): + """ + Installing two packages sharing the same namespace, one installed + to a site dir and the other installed just to a path on PYTHONPATH + should leave the namespace in tact and both packages reachable by + import. + """ + pkg_A = namespaces.build_namespace_package(tmpdir, 'myns.pkgA') + pkg_B = namespaces.build_namespace_package(tmpdir, 'myns.pkgB') + site_packages = tmpdir / 'site-packages' + path_packages = tmpdir / 'path-packages' + targets = site_packages, path_packages + python_path = os.pathsep.join(map(str, targets)) + # use pip to install to the target directory + install_cmd = [ + 'pip', + 'install', + str(pkg_A), + '-t', str(site_packages), + ] + subprocess.check_call(install_cmd) + namespaces.make_site_dir(site_packages) + install_cmd = [ + 'pip', + 'install', + str(pkg_B), + '-t', str(path_packages), + ] + subprocess.check_call(install_cmd) + try_import = [ + sys.executable, + '-c', 'import myns.pkgA; import myns.pkgB', + ] + env = dict(PYTHONPATH=python_path) + subprocess.check_call(try_import, env=env) |