diff --git a/Lib/test/test_import.py b/Lib/test/test_import.py index 1accd7e30e0..e833b1613e5 100644 --- a/Lib/test/test_import.py +++ b/Lib/test/test_import.py @@ -704,36 +704,34 @@ class PycacheTests(unittest.TestCase): class TestSymbolicallyLinkedPackage(unittest.TestCase): package_name = 'sample' + tagged = package_name + '-tagged' 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) + test.support.rmtree(self.tagged) + test.support.rmtree(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) + self.addCleanup(test.support.rmtree, self.tagged) init_file = os.path.join(self.tagged, '__init__.py') - open(init_file, 'w').close() - self.assertEqual(os.path.exists(init_file), True) + test.support.create_empty_file(init_file) + assert os.path.exists(init_file) # now create a symlink to the tagged package # sample -> sample-tagged os.symlink(self.tagged, self.package_name) + self.addCleanup(test.support.unlink, self.package_name) + importlib.invalidate_caches() # disabled because os.isdir currently fails (see issue 15093) # self.assertEqual(os.path.isdir(self.package_name), True) - self.assertEqual( - os.path.isfile(os.path.join(self.package_name, '__init__.py')), - True, - ) + assert os.path.isfile(os.path.join(self.package_name, '__init__.py')) - @property - def tagged(self): - return self.package_name + '-tagged' + def tearDown(self): + sys.path[:] = self.orig_sys_path # regression test for issue6727 @unittest.skipUnless( @@ -741,24 +739,14 @@ class TestSymbolicallyLinkedPackage(unittest.TestCase): or sys.getwindowsversion() >= (6, 0), "Windows Vista or later required") @test.support.skip_unless_symlink - @unittest.skipUnless( - sys.platform == 'win32', - "Test failing on Unix (see issue15091)" - ) def test_symlinked_dir_importable(self): # make sure sample can only be imported from the current directory. sys.path[:] = ['.'] + assert os.path.exists(self.package_name) + assert os.path.exists(os.path.join(self.package_name, '__init__.py')) - # 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 + # Try to import the package + importlib.import_module(self.package_name) @cpython_only diff --git a/Misc/NEWS b/Misc/NEWS index cf18a82120a..a09136d93a6 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -181,7 +181,10 @@ Documentation Tests ----- -- Issue #15230: Adopted a more systematic approach in the runpy tests +- Issue #15091: Reactivate a test on UNIX which was failing thanks to a + forgotten importlib.invalidate_caches() call. + +- Issue #15230: Adopted a more systematic approach in the runpy tests. - Issue #15300: Ensure the temporary test working directories are in the same parent folder when running tests in multiprocess mode from a Python build.