diff options
Diffstat (limited to 'Lib/test/test_zipfile64.py')
-rw-r--r-- | Lib/test/test_zipfile64.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile64.py b/Lib/test/test_zipfile64.py new file mode 100644 index 0000000000..c9807bfd79 --- /dev/null +++ b/Lib/test/test_zipfile64.py @@ -0,0 +1,67 @@ +# Tests of the full ZIP64 functionality of zipfile +# The test_support.requires call is the only reason for keeping this separate +# from test_zipfile +from test import test_support +test_support.requires( + 'largefile', + 'test requires loads of disk-space bytes and a long time to run' + ) + +# We can test part of the module without zlib. +try: + import zlib +except ImportError: + zlib = None + +import zipfile, os, unittest + +from StringIO import StringIO +from tempfile import TemporaryFile + +from test.test_support import TESTFN, run_unittest + +TESTFN2 = TESTFN + "2" + +class TestsWithSourceFile(unittest.TestCase): + def setUp(self): + line_gen = ("Test of zipfile line %d." % i for i in range(0, 1000000)) + self.data = '\n'.join(line_gen) + + # Make a source file with some lines + fp = open(TESTFN, "wb") + fp.write(self.data) + fp.close() + + def zipTest(self, f, compression): + # Create the ZIP archive + filecount = int(((1 << 32) / len(self.data)) * 1.5) + zipfp = zipfile.ZipFile(f, "w", compression, allowZip64=True) + + for num in range(filecount): + zipfp.writestr("testfn%d"%(num,), self.data) + zipfp.close() + + # Read the ZIP archive + zipfp = zipfile.ZipFile(f, "r", compression) + for num in range(filecount): + self.assertEqual(zipfp.read("testfn%d"%(num,)), self.data) + zipfp.close() + + def testStored(self): + for f in (TESTFN2, TemporaryFile()): + self.zipTest(f, zipfile.ZIP_STORED) + + if zlib: + def testDeflated(self): + for f in (TESTFN2, TemporaryFile()): + self.zipTest(f, zipfile.ZIP_DEFLATED) + + def tearDown(self): + os.remove(TESTFN) + os.remove(TESTFN2) + +def test_main(): + run_unittest(TestsWithSourceFile) + +if __name__ == "__main__": + test_main() |