diff options
author | Neal Norwitz <nnorwitz@gmail.com> | 2005-10-28 05:52:22 (GMT) |
---|---|---|
committer | Neal Norwitz <nnorwitz@gmail.com> | 2005-10-28 05:52:22 (GMT) |
commit | f3396542806e9c6d1dfafda5d1e53296d3d1af09 (patch) | |
tree | 20ddb14f9ad9bfeb9c00cf5eb89f31ee23543259 /Lib/test | |
parent | 466e5b336ea68293abbda84c3e99d64708043443 (diff) | |
download | cpython-f3396542806e9c6d1dfafda5d1e53296d3d1af09.zip cpython-f3396542806e9c6d1dfafda5d1e53296d3d1af09.tar.gz cpython-f3396542806e9c6d1dfafda5d1e53296d3d1af09.tar.bz2 |
Patch #1338314, Bug #1336623: fix tarfile so it can extract
REGTYPE directories from tarfiles written by old programs.
Will backport.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_tarfile.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index b202ea5..98349c4 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -144,6 +144,36 @@ class ReadTest(BaseTest): "readlines() after seek failed") fobj.close() + def test_old_dirtype(self): + """Test old style dirtype member (bug #1336623). + """ + # Old tars create directory members using a REGTYPE + # header with a "/" appended to the filename field. + + # Create an old tar style directory entry. + filename = tmpname() + tarinfo = tarfile.TarInfo("directory/") + tarinfo.type = tarfile.REGTYPE + + fobj = file(filename, "w") + fobj.write(tarinfo.tobuf()) + fobj.close() + + try: + # Test if it is still a directory entry when + # read back. + tar = tarfile.open(filename) + tarinfo = tar.getmembers()[0] + tar.close() + + self.assert_(tarinfo.type == tarfile.DIRTYPE) + self.assert_(tarinfo.name.endswith("/")) + finally: + try: + os.unlink(filename) + except: + pass + class ReadStreamTest(ReadTest): sep = "|" |