z.close()
os.remove(TEMP_ZIP)
- def test_issue31291(self):
- # There shouldn't be an assertion failure in get_data().
- class FunnyStr(str):
- def replace(self, old, new):
- return 42
- z = ZipFile(TEMP_ZIP, "w")
- try:
- name = "test31291.dat"
- data = b'foo'
- z.writestr(name, data)
- z.close()
- zi = zipimport.zipimporter(TEMP_ZIP)
- try:
- data2 = zi.get_data(FunnyStr(name))
- except AttributeError:
- pass
- else:
- self.assertEqual(data2, data)
- finally:
- z.close()
- os.remove(TEMP_ZIP)
-
def testImporterAttr(self):
src = """if 1: # indent hack
def get_file():
with self.assertRaises(TypeError):
zipimport.zipimporter(memoryview(os.fsencode(filename)))
- @support.cpython_only
- def testUninitializedZipimporter(self):
- # The interpreter shouldn't crash in case of calling methods of an
- # uninitialized zipimport.zipimporter object.
- zi = zipimport.zipimporter.__new__(zipimport.zipimporter)
- self.assertRaises((ValueError, AttributeError), zi.find_module, 'foo')
- self.assertRaises((ValueError, AttributeError), zi.find_loader, 'foo')
- self.assertRaises((ValueError, AttributeError), zi.load_module, 'foo')
- self.assertRaises((ValueError, AttributeError), zi.get_filename, 'foo')
- self.assertRaises((ValueError, AttributeError), zi.is_package, 'foo')
- self.assertRaises((ValueError, AttributeError), zi.get_data, 'foo')
- self.assertRaises((ValueError, AttributeError), zi.get_code, 'foo')
- self.assertRaises((ValueError, AttributeError), zi.get_source, 'foo')
-
@support.requires_zlib
class CompressedZipImportTestCase(UncompressedZipImportTestCase):
compression = ZIP_DEFLATED
- @support.cpython_only
- def test_issue31602(self):
- # There shouldn't be an assertion failure in zipimporter.get_source()
- # in case of a bad zlib.decompress().
- def bad_decompress(*args):
- return None
- with ZipFile(TEMP_ZIP, 'w') as zip_file:
- self.addCleanup(support.unlink, TEMP_ZIP)
- zip_file.writestr('bar.py', b'print("hello world")', ZIP_DEFLATED)
- zi = zipimport.zipimporter(TEMP_ZIP)
- with support.swap_attr(zlib, 'decompress', bad_decompress):
- self.assertRaises((TypeError, AttributeError), zi.get_source, 'bar')
-
class BadFileZipImportTestCase(unittest.TestCase):
def assertZipFailure(self, filename):