Adding test from issue6727 demonstrating that symlink import issue does not occur here in 3.3
This commit is contained in:
parent
9680bdb567
commit
71fde31da3
|
@ -13,7 +13,9 @@ import sys
|
||||||
import unittest
|
import unittest
|
||||||
import textwrap
|
import textwrap
|
||||||
import errno
|
import errno
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
import test.support
|
||||||
from test.support import (
|
from test.support import (
|
||||||
EnvironmentVarGuard, TESTFN, check_warnings, forget, is_jython,
|
EnvironmentVarGuard, TESTFN, check_warnings, forget, is_jython,
|
||||||
make_legacy_pyc, rmtree, run_unittest, swap_attr, swap_item, temp_umask,
|
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)
|
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):
|
def test_main(verbose=None):
|
||||||
flag = importlib_util.using___import__
|
flag = importlib_util.using___import__
|
||||||
try:
|
try:
|
||||||
|
@ -697,6 +749,7 @@ def test_main(verbose=None):
|
||||||
run_unittest(ImportTests, PycacheTests,
|
run_unittest(ImportTests, PycacheTests,
|
||||||
PycRewritingTests, PathsTests, RelativeImportTests,
|
PycRewritingTests, PathsTests, RelativeImportTests,
|
||||||
OverridingImportBuiltinTests,
|
OverridingImportBuiltinTests,
|
||||||
|
TestSymbolicallyLinkedPackage,
|
||||||
importlib_import_test_suite())
|
importlib_import_test_suite())
|
||||||
finally:
|
finally:
|
||||||
importlib_util.using___import__ = flag
|
importlib_util.using___import__ = flag
|
||||||
|
|
Loading…
Reference in New Issue