diff options
author | Lars Gustäbel <lars@gustaebel.de> | 2008-01-04 14:00:33 (GMT) |
---|---|---|
committer | Lars Gustäbel <lars@gustaebel.de> | 2008-01-04 14:00:33 (GMT) |
commit | 2ee1c760cc5845c06c0de98c3327299b3d72eb20 (patch) | |
tree | be2f824b1c2959791983b493b960b43a78ac54bf /Lib/test/test_tarfile.py | |
parent | 0687561c940064e41ef1f89dc63aa6218161d2b9 (diff) | |
download | cpython-2ee1c760cc5845c06c0de98c3327299b3d72eb20.zip cpython-2ee1c760cc5845c06c0de98c3327299b3d72eb20.tar.gz cpython-2ee1c760cc5845c06c0de98c3327299b3d72eb20.tar.bz2 |
Issue #1735: TarFile.extractall() now correctly sets
directory permissions and times.
(will backport to 2.5)
Diffstat (limited to 'Lib/test/test_tarfile.py')
-rw-r--r-- | Lib/test/test_tarfile.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index a280bdd..d446d5f 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -244,6 +244,23 @@ class MiscReadTest(ReadTest): data = open(os.path.join(TEMPDIR, "ustar/symtype"), "rb").read() self.assertEqual(md5sum(data), md5_regtype) + def test_extractall(self): + # Test if extractall() correctly restores directory permissions + # and times (see issue1735). + if sys.platform == "win32": + # Win32 has no support for utime() on directories or + # fine grained permissions. + return + + tar = tarfile.open(tarname, encoding="iso8859-1") + directories = [t for t in tar if t.isdir()] + tar.extractall(TEMPDIR, directories) + for tarinfo in directories: + path = os.path.join(TEMPDIR, tarinfo.name) + self.assertEqual(tarinfo.mode & 0777, os.stat(path).st_mode & 0777) + self.assertEqual(tarinfo.mtime, os.path.getmtime(path)) + tar.close() + class StreamReadTest(ReadTest): |