summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/tarfile.py4
-rw-r--r--Lib/test/test_tarfile.py10
-rw-r--r--Misc/NEWS3
3 files changed, 14 insertions, 3 deletions
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 261d9fbc36..474e306e4c 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -1044,7 +1044,9 @@ class TarFile(object):
can be determined, `mode' is overridden by `fileobj's mode.
`fileobj' is not closed, when TarFile is closed.
"""
- self.name = os.path.abspath(name)
+ self.name = name
+ if self.name is not None:
+ self.name = os.path.abspath(name)
if len(mode) > 1 or mode not in "raw":
raise ValueError("mode must be 'r', 'a' or 'w'")
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index b1cbcf69c3..dc262f656d 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -633,15 +633,21 @@ class FileModeTest(unittest.TestCase):
self.assertEqual(tarfile.filemode(07111), '---s--s--t')
class OpenFileobjTest(BaseTest):
- # Test for SF bug #1496501.
def test_opener(self):
+ # Test for SF bug #1496501.
fobj = StringIO.StringIO("foo\n")
try:
- tarfile.open("", "r", fileobj=fobj)
+ tarfile.open("", mode="r", fileobj=fobj)
except tarfile.ReadError:
self.assertEqual(fobj.tell(), 0, "fileobj's position has moved")
+ def test_fileobj(self):
+ # Test for SF bug #1695229, opening a tarfile without
+ # a name argument.
+ tarfile.open(mode="r", fileobj=open(tarname("")))
+ tarfile.TarFile(mode="r", fileobj=open(tarname("")))
+
if bz2:
# Bzip2 TestCases
class ReadTestBzip2(ReadTestGzip):
diff --git a/Misc/NEWS b/Misc/NEWS
index 58f87eac66..450bbce60a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.5.2c1?
Library
-------
+- Patch #1695229: Fix a regression with tarfile.open() and a missing name
+ argument.
+
- tarfile.py: Fix directory names to have only one trailing slash.