summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_zipimport.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test/test_zipimport.py')
-rw-r--r--Lib/test/test_zipimport.py71
1 files changed, 53 insertions, 18 deletions
diff --git a/Lib/test/test_zipimport.py b/Lib/test/test_zipimport.py
index 8df7489..be0a198 100644
--- a/Lib/test/test_zipimport.py
+++ b/Lib/test/test_zipimport.py
@@ -450,8 +450,9 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
zi = zipimport.zipimporter(TEMP_ZIP)
self.assertEqual(zi.archive, TEMP_ZIP)
- self.assertEqual(zi.is_package(TESTPACK), True)
+ self.assertTrue(zi.is_package(TESTPACK))
+ # PEP 302
find_mod = zi.find_module('spam')
self.assertIsNotNone(find_mod)
self.assertIsInstance(find_mod, zipimport.zipimporter)
@@ -462,25 +463,39 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
mod = zi.load_module(TESTPACK)
self.assertEqual(zi.get_filename(TESTPACK), mod.__file__)
+ # PEP 451
+ spec = zi.find_spec('spam')
+ self.assertIsNotNone(spec)
+ self.assertIsInstance(spec.loader, zipimport.zipimporter)
+ self.assertFalse(spec.loader.is_package('spam'))
+ exec_mod = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(exec_mod)
+ self.assertEqual(spec.loader.get_filename('spam'), exec_mod.__file__)
+
+ spec = zi.find_spec(TESTPACK)
+ mod = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(mod)
+ self.assertEqual(zi.get_filename(TESTPACK), mod.__file__)
+
existing_pack_path = importlib.import_module(TESTPACK).__path__[0]
expected_path_path = os.path.join(TEMP_ZIP, TESTPACK)
self.assertEqual(existing_pack_path, expected_path_path)
- self.assertEqual(zi.is_package(packdir + '__init__'), False)
- self.assertEqual(zi.is_package(packdir + TESTPACK2), True)
- self.assertEqual(zi.is_package(packdir2 + TESTMOD), False)
+ self.assertFalse(zi.is_package(packdir + '__init__'))
+ self.assertTrue(zi.is_package(packdir + TESTPACK2))
+ self.assertFalse(zi.is_package(packdir2 + TESTMOD))
mod_path = packdir2 + TESTMOD
mod_name = module_path_to_dotted_name(mod_path)
mod = importlib.import_module(mod_name)
self.assertTrue(mod_name in sys.modules)
- self.assertEqual(zi.get_source(TESTPACK), None)
- self.assertEqual(zi.get_source(mod_path), None)
+ self.assertIsNone(zi.get_source(TESTPACK))
+ self.assertIsNone(zi.get_source(mod_path))
self.assertEqual(zi.get_filename(mod_path), mod.__file__)
# To pass in the module name instead of the path, we must use the
# right importer
- loader = mod.__loader__
- self.assertEqual(loader.get_source(mod_name), None)
+ loader = mod.__spec__.loader
+ self.assertIsNone(loader.get_source(mod_name))
self.assertEqual(loader.get_filename(mod_name), mod.__file__)
# test prefix and archivepath members
@@ -505,17 +520,22 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
zi = zipimport.zipimporter(TEMP_ZIP + os.sep + packdir)
self.assertEqual(zi.archive, TEMP_ZIP)
self.assertEqual(zi.prefix, packdir)
- self.assertEqual(zi.is_package(TESTPACK2), True)
+ self.assertTrue(zi.is_package(TESTPACK2))
+ # PEP 302
mod = zi.load_module(TESTPACK2)
self.assertEqual(zi.get_filename(TESTPACK2), mod.__file__)
+ # PEP 451
+ spec = zi.find_spec(TESTPACK2)
+ mod = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(mod)
+ self.assertEqual(spec.loader.get_filename(TESTPACK2), mod.__file__)
- self.assertEqual(
- zi.is_package(TESTPACK2 + os.sep + '__init__'), False)
- self.assertEqual(
- zi.is_package(TESTPACK2 + os.sep + TESTMOD), False)
+ self.assertFalse(zi.is_package(TESTPACK2 + os.sep + '__init__'))
+ self.assertFalse(zi.is_package(TESTPACK2 + os.sep + TESTMOD))
pkg_path = TEMP_ZIP + os.sep + packdir + TESTPACK2
zi2 = zipimport.zipimporter(pkg_path)
+ # PEP 302
find_mod_dotted = zi2.find_module(TESTMOD)
self.assertIsNotNone(find_mod_dotted)
self.assertIsInstance(find_mod_dotted, zipimport.zipimporter)
@@ -524,17 +544,27 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
self.assertEqual(
find_mod_dotted.get_filename(TESTMOD), load_mod.__file__)
+ # PEP 451
+ spec = zi2.find_spec(TESTMOD)
+ self.assertIsNotNone(spec)
+ self.assertIsInstance(spec.loader, zipimport.zipimporter)
+ self.assertFalse(spec.loader.is_package(TESTMOD))
+ load_mod = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(load_mod)
+ self.assertEqual(
+ spec.loader.get_filename(TESTMOD), load_mod.__file__)
+
mod_path = TESTPACK2 + os.sep + TESTMOD
mod_name = module_path_to_dotted_name(mod_path)
mod = importlib.import_module(mod_name)
self.assertTrue(mod_name in sys.modules)
- self.assertEqual(zi.get_source(TESTPACK2), None)
- self.assertEqual(zi.get_source(mod_path), None)
+ self.assertIsNone(zi.get_source(TESTPACK2))
+ self.assertIsNone(zi.get_source(mod_path))
self.assertEqual(zi.get_filename(mod_path), mod.__file__)
# To pass in the module name instead of the path, we must use the
# right importer.
loader = mod.__loader__
- self.assertEqual(loader.get_source(mod_name), None)
+ self.assertIsNone(loader.get_source(mod_name))
self.assertEqual(loader.get_filename(mod_name), mod.__file__)
def testGetData(self):
@@ -655,7 +685,9 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
zinfo = ZipInfo(TESTMOD + ".py", time.localtime(NOW))
zinfo.compress_type = self.compression
z.writestr(zinfo, test_src)
- zipimport.zipimporter(filename).load_module(TESTMOD)
+ spec = zipimport.zipimporter(filename).find_spec(TESTMOD)
+ mod = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(mod)
def testBytesPath(self):
filename = os_helper.TESTFN + ".zip"
@@ -747,6 +779,8 @@ class BadFileZipImportTestCase(unittest.TestCase):
try:
self.assertRaises(TypeError, z.find_module, None)
+ self.assertRaises(TypeError, z.find_spec, None)
+ self.assertRaises(TypeError, z.exec_module, None)
self.assertRaises(TypeError, z.load_module, None)
self.assertRaises(TypeError, z.is_package, None)
self.assertRaises(TypeError, z.get_code, None)
@@ -754,7 +788,8 @@ class BadFileZipImportTestCase(unittest.TestCase):
self.assertRaises(TypeError, z.get_source, None)
error = zipimport.ZipImportError
- self.assertEqual(z.find_module('abc'), None)
+ self.assertIsNone(z.find_module('abc'))
+ self.assertIsNone(z.find_spec('abc'))
self.assertRaises(error, z.load_module, 'abc')
self.assertRaises(error, z.get_code, 'abc')