]> granicus.if.org Git - python/commitdiff
Added regression test for SF tracker bug #403871: AttributeError in
authorFred Drake <fdrake@acm.org>
Wed, 28 Feb 2001 05:34:16 +0000 (05:34 +0000)
committerFred Drake <fdrake@acm.org>
Wed, 28 Feb 2001 05:34:16 +0000 (05:34 +0000)
    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!

Lib/test/test_zipfile.py

index a7b46cb63f4e57a079cc684019b4176a4ea97376..0dc080b2ffdca692f8085605ffb2050dbd5f383c 100644 (file)
@@ -1,4 +1,5 @@
 import zipfile, os
+from test_support import TestFailed
 
 srcname = "junk9630.tmp"
 zipname = "junk9708.tmp"
@@ -23,3 +24,21 @@ finally:
         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.")