diff options
| author | Lars Gustäbel <lars@gustaebel.de> | 2007-04-20 20:10:59 +0000 |
|---|---|---|
| committer | Lars Gustäbel <lars@gustaebel.de> | 2007-04-20 20:10:59 +0000 |
| commit | 9319e43c675920fa69d1461bf9c6bb451647ae4d (patch) | |
| tree | 497e0e1d16ebab23c70d2eb35a1989f67bfb0e7f /Lib | |
| parent | d220144a84b71d4d6a35d68b091a45780c5e5162 (diff) | |
| download | cpython-git-9319e43c675920fa69d1461bf9c6bb451647ae4d.tar.gz | |
Patch #1695229: Fix a regression with tarfile.open() and a missing name
argument.
Diffstat (limited to 'Lib')
| -rw-r--r-- | Lib/tarfile.py | 4 | ||||
| -rw-r--r-- | Lib/test/test_tarfile.py | 10 |
2 files changed, 11 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): |
