Revert utime(..., None) strategy (it has too poor resolution under Windows) and restore the previous test workaround

(issue #19715)
This commit is contained in:
Antoine Pitrou 2013-11-23 02:11:02 +01:00
parent c3055be5f3
commit 12820c0d5d
2 changed files with 8 additions and 3 deletions

View File

@ -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

View File

@ -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())