Kaydet (Commit) 74b6abf6 authored tarafından Georg Brandl's avatar Georg Brandl

Merge with 3.2.

......@@ -1802,11 +1802,13 @@ class TarFile(object):
fileobj = gzip.GzipFile(name, mode + "b", compresslevel, fileobj)
t = cls.taropen(name, mode, fileobj, **kwargs)
except IOError:
if not extfileobj:
if not extfileobj and fileobj is not None:
fileobj.close()
if fileobj is None:
raise
raise ReadError("not a gzip file")
except:
if not extfileobj:
if not extfileobj and fileobj is not None:
fileobj.close()
raise
t._extfileobj = extfileobj
......
......@@ -1682,6 +1682,14 @@ class LinkEmulationTest(ReadTest):
class GzipMiscReadTest(MiscReadTest):
tarname = gzipname
mode = "r:gz"
def test_non_existent_targz_file(self):
# Test for issue11513: prevent non-existent gzipped tarfiles raising
# multiple exceptions.
with self.assertRaisesRegex(IOError, "xxx") as ex:
tarfile.open("xxx", self.mode)
self.assertEqual(ex.exception.errno, errno.ENOENT)
class GzipUstarReadTest(UstarReadTest):
tarname = gzipname
mode = "r:gz"
......
......@@ -254,6 +254,9 @@ Core and Builtins
Library
-------
- Issue #11513: Fix exception handling ``tarfile.TarFile.gzopen()`` when
the file cannot be opened.
- Issue #12687: Fix a possible buffering bug when unpickling text mode
(protocol 0, mostly) pickles.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment