[Python-checkins] r76454 - in python/branches/release26-maint: Lib/test/test_tarfile.py

lars.gustaebel python-checkins at python.org
Mon Nov 23 17:01:57 CET 2009


Author: lars.gustaebel
Date: Mon Nov 23 17:01:56 2009
New Revision: 76454

Log:
Merged revisions 76452 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r76452 | lars.gustaebel | 2009-11-23 16:46:19 +0100 (Mon, 23 Nov 2009) | 3 lines
  
  Add a testcase that checks if the TarFile constructor successfully
  closes the internal file object in case of an error (issue #7341).
........


Modified:
   python/branches/release26-maint/   (props changed)
   python/branches/release26-maint/Lib/test/test_tarfile.py

Modified: python/branches/release26-maint/Lib/test/test_tarfile.py
==============================================================================
--- python/branches/release26-maint/Lib/test/test_tarfile.py	(original)
+++ python/branches/release26-maint/Lib/test/test_tarfile.py	Mon Nov 23 17:01:56 2009
@@ -264,6 +264,24 @@
             self.assertEqual(tarinfo.mtime, os.path.getmtime(path))
         tar.close()
 
+    def test_init_close_fobj(self):
+        # Issue #7341: Close the internal file object in the TarFile
+        # constructor in case of an error. For the test we rely on
+        # the fact that opening an invalid file raises a ReadError.
+        invalid = os.path.join(TEMPDIR, "invalid")
+        open(invalid, "wb").write("foo")
+
+        try:
+            tar = object.__new__(tarfile.TarFile)
+            try:
+                tar.__init__(invalid)
+            except tarfile.ReadError:
+                self.assertTrue(tar.fileobj.closed)
+            else:
+                self.fail("ReadError not raised")
+        finally:
+            os.remove(invalid)
+
 
 class StreamReadTest(ReadTest):
 


More information about the Python-checkins mailing list