summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_zipfile64.py33
1 files changed, 22 insertions, 11 deletions
diff --git a/Lib/test/test_zipfile64.py b/Lib/test/test_zipfile64.py
index b3f5763..b842cf2 100644
--- a/Lib/test/test_zipfile64.py
+++ b/Lib/test/test_zipfile64.py
@@ -3,7 +3,7 @@
# from test_zipfile
from test import test_support
test_support.requires(
- 'largefile',
+ 'largefile',
'test requires loads of disk-space bytes and a long time to run'
)
@@ -29,22 +29,28 @@ _PRINT_WORKING_MSG_INTERVAL = 5 * 60
class TestsWithSourceFile(unittest.TestCase):
def setUp(self):
- line_gen = ("Test of zipfile line %d." % i for i in range(0, 1000000))
+ # Create test data.
+ # xrange() is important here -- don't want to create immortal space
+ # for a million ints.
+ line_gen = ("Test of zipfile line %d." % i for i in xrange(1000000))
self.data = '\n'.join(line_gen)
- # Make a source file with some lines
+ # And write it to a file.
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)
+ # Create the ZIP archive.
zipfp = zipfile.ZipFile(f, "w", compression, allowZip64=True)
+ # It will contain enough copies of self.data to reach about 6GB of
+ # raw data to store.
+ filecount = 6*1024**2 // len(self.data)
+
next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL
for num in range(filecount):
- zipfp.writestr("testfn%d"%(num,), self.data)
+ zipfp.writestr("testfn%d" % num, self.data)
# Print still working message since this test can be really slow
if next_time <= time.time():
next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL
@@ -57,7 +63,7 @@ class TestsWithSourceFile(unittest.TestCase):
# Read the ZIP archive
zipfp = zipfile.ZipFile(f, "r", compression)
for num in range(filecount):
- self.assertEqual(zipfp.read("testfn%d"%(num,)), self.data)
+ self.assertEqual(zipfp.read("testfn%d" % num), self.data)
# Print still working message since this test can be really slow
if next_time <= time.time():
next_time = time.time() + _PRINT_WORKING_MSG_INTERVAL
@@ -68,17 +74,22 @@ class TestsWithSourceFile(unittest.TestCase):
zipfp.close()
def testStored(self):
- for f in (TESTFN2, TemporaryFile()):
+ # Try the temp file first. If we do TESTFN2 first, then it hogs
+ # gigabytes of disk space for the duration of the test.
+ for f in TemporaryFile(), TESTFN2:
self.zipTest(f, zipfile.ZIP_STORED)
if zlib:
def testDeflated(self):
- for f in (TESTFN2, TemporaryFile()):
+ # Try the temp file first. If we do TESTFN2 first, then it hogs
+ # gigabytes of disk space for the duration of the test.
+ for f in TemporaryFile(), TESTFN2:
self.zipTest(f, zipfile.ZIP_DEFLATED)
def tearDown(self):
- os.remove(TESTFN)
- os.remove(TESTFN2)
+ for fname in TESTFN, TESTFN2:
+ if os.path.exists(fname):
+ os.remove(fname)
def test_main():
run_unittest(TestsWithSourceFile)