Merged revisions 64688 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r64688 | martin.v.loewis | 2008-07-03 14:51:14 +0200 (Do, 03 Jul 2008) | 9 lines

  Patch #1622: Correct interpretation of various ZIP header fields.

  Also fixes
  - Issue #1526: Allow more than 64k files to be added to Zip64 file.

  - Issue #1746: Correct handling of zipfile archive comments (previously
    archives with comments over 4k were flagged as invalid). Allow writing
    Zip files with archives by setting the 'comment' attribute of a ZipFile.
........
This commit is contained in:
Martin v. Löwis 2008-07-03 14:13:42 +00:00
parent 451a356f11
commit b09b844a5c
5 changed files with 314 additions and 106 deletions

View file

@ -2,6 +2,7 @@
# The support.requires call is the only reason for keeping this separate
# from test_zipfile
from test import support
# XXX(nnorwitz): disable this test by looking for extra largfile resource
# which doesn't exist. This test takes over 30 minutes to run in general
# and requires more disk space than most of the buildbots.
@ -92,8 +93,31 @@ class TestsWithSourceFile(unittest.TestCase):
if os.path.exists(fname):
os.remove(fname)
class OtherTests(unittest.TestCase):
def testMoreThan64kFiles(self):
# This test checks that more than 64k files can be added to an archive,
# and that the resulting archive can be read properly by ZipFile
zipf = zipfile.ZipFile(TESTFN, mode="w")
zipf.debug = 100
numfiles = (1 << 16) * 3/2
for i in xrange(numfiles):
zipf.writestr("foo%08d" % i, "%d" % (i**3 % 57))
self.assertEqual(len(zipf.namelist()), numfiles)
zipf.close()
zipf2 = zipfile.ZipFile(TESTFN, mode="r")
self.assertEqual(len(zipf2.namelist()), numfiles)
for i in xrange(numfiles):
self.assertEqual(zipf2.read("foo%08d" % i), "%d" % (i**3 % 57))
zipf.close()
def tearDown(self):
test_support.unlink(TESTFN)
test_support.unlink(TESTFN2)
def test_main():
run_unittest(TestsWithSourceFile)
run_unittest(TestsWithSourceFile, OtherTests)
if __name__ == "__main__":
test_main()