diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2012-06-17 07:53:47 (GMT) |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2012-06-17 07:53:47 (GMT) |
commit | 71fde31da3d3630b8dc271d3548cba693892509e (patch) | |
tree | cc8ca5b4c23ca7ac799d4391ae5949380b633ffe /Lib/test/test_import.py | |
parent | 9680bdb567aeafa94d75ffbdb7e5e8b24c605b13 (diff) | |
download | cpython-71fde31da3d3630b8dc271d3548cba693892509e.zip cpython-71fde31da3d3630b8dc271d3548cba693892509e.tar.gz cpython-71fde31da3d3630b8dc271d3548cba693892509e.tar.bz2 |
Adding test from issue6727 demonstrating that symlink import issue does not occur here in 3.3
Diffstat (limited to 'Lib/test/test_import.py')
-rw-r--r-- | Lib/test/test_import.py | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py index a90e627..140bd96 100644 --- a/Lib/test/test_import.py +++ b/Lib/test/test_import.py @@ -13,7 +13,9 @@ import sys import unittest import textwrap import errno +import shutil +import test.support from test.support import ( EnvironmentVarGuard, TESTFN, check_warnings, forget, is_jython, make_legacy_pyc, rmtree, run_unittest, swap_attr, swap_item, temp_umask, @@ -690,6 +692,56 @@ class PycacheTests(unittest.TestCase): self.assertEqual(m.x, 5) +class TestSymbolicallyLinkedPackage(unittest.TestCase): + package_name = 'sample' + + def setUp(self): + if os.path.exists(self.tagged): + shutil.rmtree(self.tagged) + if os.path.exists(self.package_name): + os.remove(self.package_name) + self.orig_sys_path = sys.path[:] + + # create a sample package; imagine you have a package with a tag and + # you want to symbolically link it from its untagged name. + os.mkdir(self.tagged) + init_file = os.path.join(self.tagged, '__init__.py') + open(init_file, 'w').close() + assert os.path.exists(init_file) + + # now create a symlink to the tagged package + # sample -> sample-tagged + os.symlink(self.tagged, self.package_name) + + # assert os.path.isdir(self.package_name) # currently fails + assert os.path.isfile(os.path.join(self.package_name, '__init__.py')) + + @property + def tagged(self): + return self.package_name + '-tagged' + + # regression test for issue6727 + @unittest.skipUnless( + not hasattr(sys, 'getwindowsversion') + or sys.getwindowsversion() >= (6, 0), + "Windows Vista or later required") + @test.support.skip_unless_symlink + def test_symlinked_dir_importable(self): + # make sure sample can only be imported from the current directory. + sys.path[:] = ['.'] + + # and try to import the package + __import__(self.package_name) + + def tearDown(self): + # now cleanup + if os.path.exists(self.package_name): + os.remove(self.package_name) + if os.path.exists(self.tagged): + shutil.rmtree(self.tagged) + sys.path[:] = self.orig_sys_path + + def test_main(verbose=None): flag = importlib_util.using___import__ try: @@ -697,6 +749,7 @@ def test_main(verbose=None): run_unittest(ImportTests, PycacheTests, PycRewritingTests, PathsTests, RelativeImportTests, OverridingImportBuiltinTests, + TestSymbolicallyLinkedPackage, importlib_import_test_suite()) finally: importlib_util.using___import__ = flag |