mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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()
 | 
