mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
Change the zipimport implementation to accept files containing
arbitrary bytes before the actual zip compatible archive. Zipfiles containing comments at the end of the file are still not supported. Add a testcase to test_zipimport, and update NEWS. This closes sf #775637 and sf #669036.
This commit is contained in:
parent
fac083d14a
commit
354e3d90d3
3 changed files with 31 additions and 3 deletions
|
@ -49,7 +49,7 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
|
|||
zipimport._zip_directory_cache.clear()
|
||||
ImportHooksBaseTestCase.setUp(self)
|
||||
|
||||
def doTest(self, expected_ext, files, *modules):
|
||||
def doTest(self, expected_ext, files, *modules, **kw):
|
||||
z = ZipFile(TEMP_ZIP, "w")
|
||||
try:
|
||||
for name, (mtime, data) in files.items():
|
||||
|
@ -57,6 +57,19 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
|
|||
zinfo.compress_type = self.compression
|
||||
z.writestr(zinfo, data)
|
||||
z.close()
|
||||
|
||||
stuff = kw.get("stuff", None)
|
||||
if stuff is not None:
|
||||
# Prepend 'stuff' to the start of the zipfile
|
||||
f = open(TEMP_ZIP, "rb")
|
||||
data = f.read()
|
||||
f.close()
|
||||
|
||||
f = open(TEMP_ZIP, "wb")
|
||||
f.write(stuff)
|
||||
f.write(data)
|
||||
f.close()
|
||||
|
||||
sys.path.insert(0, TEMP_ZIP)
|
||||
|
||||
mod = __import__(".".join(modules), globals(), locals(),
|
||||
|
@ -181,6 +194,12 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
|
|||
"some.data": (NOW, "some data")}
|
||||
self.doTest(pyc_ext, files, TESTMOD)
|
||||
|
||||
def testImport_WithStuff(self):
|
||||
# try importing from a zipfile which contains additional
|
||||
# stuff at the beginning of the file
|
||||
files = {TESTMOD + ".py": (NOW, test_src)}
|
||||
self.doTest(".py", files, TESTMOD,
|
||||
stuff="Some Stuff"*31)
|
||||
|
||||
class CompressedZipImportTestCase(UncompressedZipImportTestCase):
|
||||
compression = ZIP_DEFLATED
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue