cpython/Lib/test/test_zipfile.py

62 lines
2.0 KiB
Python
Raw Normal View History

import zipfile, os, StringIO, tempfile
from test_support import TestFailed
2000-04-10 10:23:04 -03:00
srcname = "junk9630.tmp"
zipname = "junk9708.tmp"
def zipTest(f, compression, srccontents):
zip = zipfile.ZipFile(f, "w", compression) # Create the ZIP archive
zip.write(srcname, "another.name")
zip.write(srcname, srcname)
zip.close()
2001-03-29 00:36:09 -04:00
zip = zipfile.ZipFile(f, "r", compression) # Read the ZIP archive
readData2 = zip.read(srcname)
readData1 = zip.read("another.name")
zip.close()
2001-03-29 00:36:09 -04:00
if readData1 != srccontents or readData2 != srccontents:
raise TestFailed, "Written data doesn't equal read data."
2000-04-10 10:23:04 -03:00
try:
fp = open(srcname, "wb") # Make a source file with some lines
for i in range(0, 1000):
fp.write("Test of zipfile line %d.\n" % i)
fp.close()
2001-03-29 00:36:09 -04:00
fp = open(srcname, "rb")
writtenData = fp.read()
fp.close()
2001-03-29 00:36:09 -04:00
for file in (zipname, tempfile.TemporaryFile(), StringIO.StringIO()):
zipTest(file, zipfile.ZIP_STORED, writtenData)
2000-04-10 10:23:04 -03:00
for file in (zipname, tempfile.TemporaryFile(), StringIO.StringIO()):
zipTest(file, zipfile.ZIP_DEFLATED, writtenData)
2000-04-10 10:23:04 -03:00
finally:
if os.path.isfile(srcname): # Remove temporary files
os.unlink(srcname)
if os.path.isfile(zipname):
os.unlink(zipname)
# make sure we don't raise an AttributeError when a partially-constructed
# ZipFile instance is finalized; this tests for regression on SF tracker
# bug #403871.
try:
zipfile.ZipFile(srcname)
except IOError:
# The bug we're testing for caused an AttributeError to be raised
# when a ZipFile instance was created for a file that did not
# exist; the .fp member was not initialized but was needed by the
# __del__() method. Since the AttributeError is in the __del__(),
# it is ignored, but the user should be sufficiently annoyed by
# the message on the output that regression will be noticed
# quickly.
pass
else:
raise TestFailed("expected creation of readable ZipFile without\n"
" a file to raise an IOError.")