[Python-checkins] CVS: python/dist/src/Lib/test test_zipfile.py,1.2,1.3

Fred L. Drake fdrake@users.sourceforge.net
Tue, 27 Feb 2001 21:34:18 -0800


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv28430/test

Modified Files:
	test_zipfile.py 
Log Message:

Added regression test for SF tracker bug #403871:  AttributeError in
    ZipFile.__del__() when there was an IOError opening the underlying
    file in ZipFile.__init__().

    This is an odd test: since the exception is in the __del__() method,
    it is not propogated.  This test will trigger it but regrtest.py
    does not detect the failure (not sure why); we are dependent on it
    actually being noticed by a user to get a new bug report if it ever
    fails.  ;-(

    On the other hand, this makes sure that code gets exercised, so
    a failure could be noticed!


Index: test_zipfile.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_zipfile.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** test_zipfile.py	2000/10/23 17:22:08	1.2
--- test_zipfile.py	2001/02/28 05:34:16	1.3
***************
*** 1,3 ****
--- 1,4 ----
  import zipfile, os
+ from test_support import TestFailed
  
  srcname = "junk9630.tmp"
***************
*** 24,25 ****
--- 25,44 ----
      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.")