From: Serhiy Storchaka Date: Tue, 22 Jul 2014 07:39:59 +0000 (+0300) Subject: Backout 308f3c1e36d3. This change (issue21044) does not need to be merged on X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7cc3b0aefb363f37faead33d042c1c952e362d4b;p=python Backout 308f3c1e36d3. This change (issue21044) does not need to be merged on 2.7, as the os.fdopen sets the name attribute to '' and not to the fd. --- diff --git a/Lib/tarfile.py b/Lib/tarfile.py index db5ff7f9a4..57ea877911 100644 --- a/Lib/tarfile.py +++ b/Lib/tarfile.py @@ -1522,8 +1522,7 @@ class TarFile(object): fileobj = bltn_open(name, self._mode) self._extfileobj = False else: - if (name is None and hasattr(fileobj, "name") and - isinstance(fileobj.name, basestring)): + if name is None and hasattr(fileobj, "name"): name = fileobj.name if hasattr(fileobj, "mode"): self._mode = fileobj.mode diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 7d13398e92..ff3265fc0e 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -1,7 +1,6 @@ # -*- coding: iso-8859-15 -*- import sys -import io import os import shutil import StringIO @@ -290,49 +289,24 @@ class CommonReadTest(ReadTest): class MiscReadTest(CommonReadTest): taropen = tarfile.TarFile.taropen - def requires_name_attribute(self): - pass - def test_no_name_argument(self): - self.requires_name_attribute() - with open(self.tarname, "rb") as fobj: - self.assertIsInstance(fobj.name, str) - with tarfile.open(fileobj=fobj, mode=self.mode) as tar: - self.assertIsInstance(tar.name, str) - self.assertEqual(tar.name, os.path.abspath(fobj.name)) + fobj = open(self.tarname, "rb") + tar = tarfile.open(fileobj=fobj, mode=self.mode) + self.assertEqual(tar.name, os.path.abspath(fobj.name)) def test_no_name_attribute(self): data = open(self.tarname, "rb").read() fobj = StringIO.StringIO(data) self.assertRaises(AttributeError, getattr, fobj, "name") tar = tarfile.open(fileobj=fobj, mode=self.mode) - self.assertIsNone(tar.name) + self.assertEqual(tar.name, None) def test_empty_name_attribute(self): data = open(self.tarname, "rb").read() fobj = StringIO.StringIO(data) fobj.name = "" tar = tarfile.open(fileobj=fobj, mode=self.mode) - self.assertIsNone(tar.name) - - def test_int_name_attribute(self): - # Issue 21044: tarfile.open() should handle fileobj with an integer - # 'name' attribute. - fd = os.open(self.tarname, os.O_RDONLY) - with io.open(fd, 'rb') as fobj: - self.assertIsInstance(fobj.name, int) - with tarfile.open(fileobj=fobj, mode=self.mode) as tar: - self.assertIsNone(tar.name) - - @test_support.requires_unicode - def test_unicode_name_attribute(self): - self.requires_name_attribute() - tarname = unicode(self.tarname, test_support.TESTFN_ENCODING) - with io.open(tarname, 'rb') as fobj: - self.assertIsInstance(fobj.name, unicode) - with tarfile.open(fileobj=fobj, mode=self.mode) as tar: - self.assertIsInstance(tar.name, unicode) - self.assertEqual(tar.name, os.path.abspath(fobj.name)) + self.assertEqual(tar.name, None) def test_illegal_mode_arg(self): with open(tmpname, 'wb'): @@ -1694,8 +1668,6 @@ class Bz2MiscReadTest(MiscReadTest): tarname = bz2name mode = "r:bz2" taropen = tarfile.TarFile.bz2open - def requires_name_attribute(self): - self.skipTest("BZ2File have no name attribute") class Bz2UstarReadTest(UstarReadTest): tarname = bz2name mode = "r:bz2" diff --git a/Misc/ACKS b/Misc/ACKS index 7fcfae03e1..87164689e3 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -997,7 +997,6 @@ Mike Pall Todd R. Palmer Juan David Ibáñez Palomar Jan Palus -Martin Panter Mathias Panzenböck M. Papillon Peter Parente diff --git a/Misc/NEWS b/Misc/NEWS index 5dfeb829f3..a57a0e4f20 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -19,9 +19,6 @@ Library - Issue #21868: Prevent turtle crash when undo buffer set to a value less than one. -- Issue #21044: tarfile.open() now handles fileobj with an integer 'name' - attribute. Based on patch by Martin Panter. - - Issue #21151: Fixed a segfault in the _winreg module when ``None`` is passed as a ``REG_BINARY`` value to SetValueEx. Patch by John Ehresman.