mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Merged revisions 67717 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r67717 | lars.gustaebel | 2008-12-12 14:58:03 +0100 (Fri, 12 Dec 2008) | 2 lines Issue #4616: TarFile.utime(): Restore directory times on Windows. ........
This commit is contained in:
parent
a5bbf20017
commit
43fcf3a493
3 changed files with 5 additions and 10 deletions
|
@ -2265,10 +2265,6 @@ class TarFile(object):
|
||||||
"""
|
"""
|
||||||
if not hasattr(os, 'utime'):
|
if not hasattr(os, 'utime'):
|
||||||
return
|
return
|
||||||
if sys.platform == "win32" and tarinfo.isdir():
|
|
||||||
# According to msdn.microsoft.com, it is an error (EACCES)
|
|
||||||
# to use utime() on directories.
|
|
||||||
return
|
|
||||||
try:
|
try:
|
||||||
os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime))
|
os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime))
|
||||||
except EnvironmentError as e:
|
except EnvironmentError as e:
|
||||||
|
|
|
@ -255,17 +255,14 @@ class MiscReadTest(ReadTest):
|
||||||
def test_extractall(self):
|
def test_extractall(self):
|
||||||
# Test if extractall() correctly restores directory permissions
|
# Test if extractall() correctly restores directory permissions
|
||||||
# and times (see issue1735).
|
# 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")
|
tar = tarfile.open(tarname, encoding="iso8859-1")
|
||||||
directories = [t for t in tar if t.isdir()]
|
directories = [t for t in tar if t.isdir()]
|
||||||
tar.extractall(TEMPDIR, directories)
|
tar.extractall(TEMPDIR, directories)
|
||||||
for tarinfo in directories:
|
for tarinfo in directories:
|
||||||
path = os.path.join(TEMPDIR, tarinfo.name)
|
path = os.path.join(TEMPDIR, tarinfo.name)
|
||||||
self.assertEqual(tarinfo.mode & 0o777, os.stat(path).st_mode & 0o777)
|
if sys.platform != "win32":
|
||||||
|
# Win32 has no support for fine grained permissions.
|
||||||
|
self.assertEqual(tarinfo.mode & 0o777, os.stat(path).st_mode & 0o777)
|
||||||
self.assertEqual(tarinfo.mtime, os.path.getmtime(path))
|
self.assertEqual(tarinfo.mtime, os.path.getmtime(path))
|
||||||
tar.close()
|
tar.close()
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #4616: TarFile.utime(): Restore directory times on Windows.
|
||||||
|
|
||||||
- Issue #4021: tokenize.detect_encoding() now raises a SyntaxError when the
|
- Issue #4021: tokenize.detect_encoding() now raises a SyntaxError when the
|
||||||
codec cannot be found. This is for compatibility with the builtin behavior.
|
codec cannot be found. This is for compatibility with the builtin behavior.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue