summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2013-11-23 01:11:02 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2013-11-23 01:11:02 (GMT)
commit12820c0d5d6b3ccbd191703d1003794ddb1bcac9 (patch)
tree660ed2770a578098aff79181924905b94a8bddf8
parentc3055be5f30a4b980356322e11a3d8e119059dbe (diff)
downloadcpython-12820c0d5d6b3ccbd191703d1003794ddb1bcac9.zip
cpython-12820c0d5d6b3ccbd191703d1003794ddb1bcac9.tar.gz
cpython-12820c0d5d6b3ccbd191703d1003794ddb1bcac9.tar.bz2
Revert utime(..., None) strategy (it has too poor resolution under Windows) and restore the previous test workaround
(issue #19715)
-rw-r--r--Lib/pathlib.py4
-rwxr-xr-xLib/test/test_pathlib.py7
2 files changed, 8 insertions, 3 deletions
diff --git a/Lib/pathlib.py b/Lib/pathlib.py
index e73eca7..06cbae5 100644
--- a/Lib/pathlib.py
+++ b/Lib/pathlib.py
@@ -6,6 +6,7 @@ import os
import posixpath
import re
import sys
+import time
import weakref
try:
import threading
@@ -1075,8 +1076,9 @@ class Path(PurePath):
# First try to bump modification time
# Implementation note: GNU touch uses the UTIME_NOW option of
# the utimensat() / futimens() functions.
+ t = time.time()
try:
- self._accessor.utime(self, None)
+ self._accessor.utime(self, (t, t))
except OSError:
# Avoid exception chaining
pass
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py
index 049e12d..6663ffa 100755
--- a/Lib/test/test_pathlib.py
+++ b/Lib/test/test_pathlib.py
@@ -1391,8 +1391,11 @@ class _BasePathTest(object):
# The file mtime should be refreshed by calling touch() again
p.touch()
st = p.stat()
- self.assertGreaterEqual(st.st_mtime_ns, old_mtime_ns)
- self.assertGreaterEqual(st.st_mtime, old_mtime)
+ # Issue #19715: there can be an inconsistency under Windows between
+ # the timestamp rounding when creating a file, and the timestamp
+ # rounding done when calling utime(). `delta` makes up for this.
+ delta = 1e-6 if os.name == 'nt' else 0
+ self.assertGreaterEqual(st.st_mtime, old_mtime - delta)
# Now with exist_ok=False
p = P / 'newfileB'
self.assertFalse(p.exists())