summaryrefslogtreecommitdiff
path: root/pkg_resources/tests/test_resources.py
diff options
context:
space:
mode:
authorErik Bray <embray@stsci.edu>2015-12-31 14:17:41 -0500
committerErik Bray <embray@stsci.edu>2015-12-31 14:17:41 -0500
commitd3de33538948081d9ef39168fde870c977e30115 (patch)
tree314e5090159b5c7e09560d04d303fffba2c06f87 /pkg_resources/tests/test_resources.py
parente0e02ba96d8ee3b7be76adeec1ec9b9c3c004516 (diff)
downloadpython-setuptools-git-d3de33538948081d9ef39168fde870c977e30115.tar.gz
Fixes the original root cause of #231, and re-enables the test when the tempdir is a symlink (this does not explicitly test that /tmp itself is a symlink, but the effect is the same--only one of the path levels needs to be a symlink to reproduce this isssue)
Diffstat (limited to 'pkg_resources/tests/test_resources.py')
-rw-r--r--pkg_resources/tests/test_resources.py26
1 files changed, 20 insertions, 6 deletions
diff --git a/pkg_resources/tests/test_resources.py b/pkg_resources/tests/test_resources.py
index 4241765a..ba12d857 100644
--- a/pkg_resources/tests/test_resources.py
+++ b/pkg_resources/tests/test_resources.py
@@ -610,18 +610,32 @@ class TestNamespaces:
def setup_method(self, method):
self._ns_pkgs = pkg_resources._namespace_packages.copy()
- self._tmpdir = tempfile.mkdtemp(prefix="tests-setuptools-")
+
+ # Further, test case where the temp dir is a symlink, where applicable
+ # See #231
+ if hasattr(os, 'symlink'):
+ real_tmpdir = tempfile.mkdtemp(prefix="real-tests-setuptools-")
+ tmpdir_base, tmpdir_name = os.path.split(real_tmpdir)
+ tmpdir = os.path.join(tmpdir_base, tmpdir_name[5:])
+ os.symlink(real_tmpdir, tmpdir)
+ self._real_tmpdir = real_tmpdir
+ self._tmpdir = tmpdir
+ else:
+ tmpdir = tempfile.mkdtemp(prefix="tests-setuptools-")
+ self._real_tmpdir = self._tmpdir = tmpdir
+
os.makedirs(os.path.join(self._tmpdir, "site-pkgs"))
self._prev_sys_path = sys.path[:]
sys.path.append(os.path.join(self._tmpdir, "site-pkgs"))
def teardown_method(self, method):
- shutil.rmtree(self._tmpdir)
+ shutil.rmtree(self._real_tmpdir)
+ if os.path.islink(self._tmpdir):
+ os.unlink(self._tmpdir)
+
pkg_resources._namespace_packages = self._ns_pkgs.copy()
sys.path = self._prev_sys_path[:]
- @pytest.mark.skipif(os.path.islink(tempfile.gettempdir()),
- reason="Test fails when /tmp is a symlink. See #231")
def test_two_levels_deep(self):
"""
Test nested namespace packages
@@ -653,7 +667,7 @@ class TestNamespaces:
assert pkg_resources._namespace_packages["pkg1"] == ["pkg1.pkg2"]
# check the __path__ attribute contains both paths
expected = [
- os.path.join(self._tmpdir, "site-pkgs", "pkg1", "pkg2"),
- os.path.join(self._tmpdir, "site-pkgs2", "pkg1", "pkg2"),
+ os.path.join(self._real_tmpdir, "site-pkgs", "pkg1", "pkg2"),
+ os.path.join(self._real_tmpdir, "site-pkgs2", "pkg1", "pkg2"),
]
assert pkg1.pkg2.__path__ == expected