mirror of
https://github.com/python/cpython.git
synced 2025-12-04 16:43:27 +00:00
Further tarfile / test_tarfile cleanup
This commit is contained in:
parent
b09a3d69a6
commit
605c293031
2 changed files with 35 additions and 25 deletions
|
|
@ -410,6 +410,7 @@ class _Stream:
|
||||||
self.pos = 0
|
self.pos = 0
|
||||||
self.closed = False
|
self.closed = False
|
||||||
|
|
||||||
|
try:
|
||||||
if comptype == "gz":
|
if comptype == "gz":
|
||||||
try:
|
try:
|
||||||
import zlib
|
import zlib
|
||||||
|
|
@ -432,6 +433,11 @@ class _Stream:
|
||||||
self.cmp = bz2.BZ2Decompressor()
|
self.cmp = bz2.BZ2Decompressor()
|
||||||
else:
|
else:
|
||||||
self.cmp = bz2.BZ2Compressor()
|
self.cmp = bz2.BZ2Compressor()
|
||||||
|
except:
|
||||||
|
if not self._extfileobj:
|
||||||
|
self.fileobj.close()
|
||||||
|
self.closed = True
|
||||||
|
raise
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
if hasattr(self, "closed") and not self.closed:
|
if hasattr(self, "closed") and not self.closed:
|
||||||
|
|
@ -1729,9 +1735,12 @@ class TarFile(object):
|
||||||
if filemode not in "rw":
|
if filemode not in "rw":
|
||||||
raise ValueError("mode must be 'r' or 'w'")
|
raise ValueError("mode must be 'r' or 'w'")
|
||||||
|
|
||||||
t = cls(name, filemode,
|
stream = _Stream(name, filemode, comptype, fileobj, bufsize)
|
||||||
_Stream(name, filemode, comptype, fileobj, bufsize),
|
try:
|
||||||
**kwargs)
|
t = cls(name, filemode, stream, **kwargs)
|
||||||
|
except:
|
||||||
|
stream.close()
|
||||||
|
raise
|
||||||
t._extfileobj = False
|
t._extfileobj = False
|
||||||
return t
|
return t
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -423,7 +423,8 @@ class DetectReadTest(unittest.TestCase):
|
||||||
|
|
||||||
def _testfunc_fileobj(self, name, mode):
|
def _testfunc_fileobj(self, name, mode):
|
||||||
try:
|
try:
|
||||||
tar = tarfile.open(name, mode, fileobj=open(name, "rb"))
|
with open(name, "rb") as f:
|
||||||
|
tar = tarfile.open(name, mode, fileobj=f)
|
||||||
except tarfile.ReadError as e:
|
except tarfile.ReadError as e:
|
||||||
self.fail()
|
self.fail()
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue