[Python-checkins] python/dist/src/Lib/test test_zipfile.py, 1.10,
1.11
jlgijsbers at users.sourceforge.net
jlgijsbers at users.sourceforge.net
Thu Aug 19 17:11:53 CEST 2004
Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23093
Modified Files:
test_zipfile.py
Log Message:
Port test_zipfile to unittest (patch #736962).
Index: test_zipfile.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_zipfile.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** test_zipfile.py 27 Jun 2003 22:25:03 -0000 1.10
--- test_zipfile.py 19 Aug 2004 15:11:50 -0000 1.11
***************
*** 1,99 ****
! import zlib # implied prerequisite
! import zipfile, os, StringIO, tempfile
! from test.test_support import TestFailed
! srcname = "junk9630"+os.extsep+"tmp"
! zipname = "junk9708"+os.extsep+"tmp"
! def zipTest(f, compression, srccontents):
! zip = zipfile.ZipFile(f, "w", compression) # Create the ZIP archive
! zip.write(srcname, "another"+os.extsep+"name")
! zip.write(srcname, srcname)
! zip.close()
! zip = zipfile.ZipFile(f, "r", compression) # Read the ZIP archive
! readData2 = zip.read(srcname)
! readData1 = zip.read("another"+os.extsep+"name")
! zip.close()
! if readData1 != srccontents or readData2 != srccontents:
! raise TestFailed, "Written data doesn't equal read data."
! 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()
! fp = open(srcname, "rb")
! writtenData = fp.read()
! fp.close()
! for file in (zipname, tempfile.TemporaryFile(), StringIO.StringIO()):
! zipTest(file, zipfile.ZIP_STORED, writtenData)
! for file in (zipname, tempfile.TemporaryFile(), StringIO.StringIO()):
! zipTest(file, zipfile.ZIP_DEFLATED, writtenData)
! finally:
! if os.path.isfile(srcname): # Remove temporary files
! os.unlink(srcname)
! if os.path.isfile(zipname):
! os.unlink(zipname)
! # This test checks that the ZipFile constructor closes the file object
! # it opens if there's an error in the file. If it doesn't, the traceback
! # holds a reference to the ZipFile object and, indirectly, the file object.
! # On Windows, this causes the os.unlink() call to fail because the
! # underlying file is still open. This is SF bug #412214.
! #
! fp = open(srcname, "w")
! fp.write("this is not a legal zip file\n")
! fp.close()
! try:
! zf = zipfile.ZipFile(srcname)
! except zipfile.BadZipfile:
! os.unlink(srcname)
! # 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.")
! # Verify that testzip() doesn't swallow inappropriate exceptions.
! data = StringIO.StringIO()
! zipf = zipfile.ZipFile(data, mode="w")
! zipf.writestr("foo.txt", "O, for a Muse of Fire!")
! zipf.close()
! zipf = zipfile.ZipFile(data, mode="r")
! zipf.close()
! try:
! zipf.testzip()
! except RuntimeError:
! # This is correct; calling .read on a closed ZipFile should throw
! # a RuntimeError, and so should calling .testzip. An earlier
! # version of .testzip would swallow this exception (and any other)
! # and report that the first file in the archive was corrupt.
! pass
! else:
! raise TestFailed("expected calling .testzip on a closed ZipFile"
! " to raise a RuntimeError")
! del data, zipf
--- 1,99 ----
! # 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, 1000))
! 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
+ zipfp = zipfile.ZipFile(f, "w", compression)
+ zipfp.write(TESTFN, "another"+os.extsep+"name")
+ zipfp.write(TESTFN, TESTFN)
+ zipfp.close()
! # Read the ZIP archive
! zipfp = zipfile.ZipFile(f, "r", compression)
! self.assertEqual(zipfp.read(TESTFN), self.data)
! self.assertEqual(zipfp.read("another"+os.extsep+"name"), self.data)
! zipfp.close()
! def testStored(self):
! for f in (TESTFN2, TemporaryFile(), StringIO()):
! self.zipTest(f, zipfile.ZIP_STORED)
! if zlib:
! def testDeflated(self):
! for f in (TESTFN2, TemporaryFile(), StringIO()):
! self.zipTest(f, zipfile.ZIP_DEFLATED)
! def tearDown(self):
! os.remove(TESTFN)
! os.remove(TESTFN2)
! class OtherTests(unittest.TestCase):
! def testCloseErroneousFile(self):
! # This test checks that the ZipFile constructor closes the file object
! # it opens if there's an error in the file. If it doesn't, the traceback
! # holds a reference to the ZipFile object and, indirectly, the file object.
! # On Windows, this causes the os.unlink() call to fail because the
! # underlying file is still open. This is SF bug #412214.
! #
! fp = open(TESTFN, "w")
! fp.write("this is not a legal zip file\n")
! fp.close()
! try:
! zf = zipfile.ZipFile(TESTFN)
! except zipfile.BadZipfile:
! os.unlink(TESTFN)
+ def testNonExistentFileRaisesIOError(self):
+ # 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.
! # 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.
! self.assertRaises(IOError, zipfile.ZipFile, TESTFN)
+ def testClosedZipRaisesRuntimeError(self):
+ # Verify that testzip() doesn't swallow inappropriate exceptions.
+ data = StringIO()
+ zipf = zipfile.ZipFile(data, mode="w")
+ zipf.writestr("foo.txt", "O, for a Muse of Fire!")
+ zipf.close()
! # This is correct; calling .read on a closed ZipFile should throw
! # a RuntimeError, and so should calling .testzip. An earlier
! # version of .testzip would swallow this exception (and any other)
! # and report that the first file in the archive was corrupt.
! self.assertRaises(RuntimeError, zipf.testzip)
+ def test_main():
+ run_unittest(TestsWithSourceFile, OtherTests)
! if __name__ == "__main__":
! test_main()
More information about the Python-checkins
mailing list