diff options
-rw-r--r-- | setuptools/tests/test_find_packages.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/setuptools/tests/test_find_packages.py b/setuptools/tests/test_find_packages.py index 92f7aff7..fe390728 100644 --- a/setuptools/tests/test_find_packages.py +++ b/setuptools/tests/test_find_packages.py @@ -12,12 +12,26 @@ from setuptools.tests.py26compat import skipIf find_420_packages = setuptools.PEP420PackageFinder.find +# modeled after CPython's test.support.can_symlink +def can_symlink(): + TESTFN = tempfile.mktemp() + symlink_path = TESTFN + "can_symlink" + try: + os.symlink(TESTFN, symlink_path) + can = True + except (OSError, NotImplementedError, AttributeError): + can = False + else: + os.remove(symlink_path) + globals().update(can_symlink=lambda: can) + return can + def has_symlink(): bad_symlink = ( # Windows symlink directory detection is broken on Python 3.2 platform.system() == 'Windows' and sys.version_info[:2] == (3,2) ) - return hasattr(os, 'symlink') and not bad_symlink + return can_symlink() and not bad_symlink class TestFindPackages(unittest.TestCase): |