summaryrefslogtreecommitdiff
path: root/setuptools/tests/test_namespaces.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2016-12-11 15:20:32 -0500
committerJason R. Coombs <jaraco@jaraco.com>2016-12-11 15:32:28 -0500
commit3dd506f01d48b98aeea9bdbca0105d4c7d8ad538 (patch)
tree07b3933bd8651b7ac184736f2a3463a483e4e7b5 /setuptools/tests/test_namespaces.py
parent2268fb9887cfea2e28e156bd2c8314132261402f (diff)
parent5c9406987aacf17d9c004aa1456797e0044306e5 (diff)
downloadpython-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.py52
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)