summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_os.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2012-02-08 02:01:11 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2012-02-08 02:01:11 (GMT)
commitbe557dedf9fdf724c786aa030c3b9af4400d7a43 (patch)
tree42b32dcaee7a795b4ec618615724cfd46283de45 /Lib/test/test_os.py
parentf4c54ff5cd57533f2c655a4fefb7b726341cbc8d (diff)
downloadcpython-be557dedf9fdf724c786aa030c3b9af4400d7a43.zip
cpython-be557dedf9fdf724c786aa030c3b9af4400d7a43.tar.gz
cpython-be557dedf9fdf724c786aa030c3b9af4400d7a43.tar.bz2
Issue #13964: Write tests for new os.*utime*() functions
Diffstat (limited to 'Lib/test/test_os.py')
-rw-r--r--Lib/test/test_os.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 8b07c77..7d8712a 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -300,6 +300,43 @@ class StatAttributeTests(unittest.TestCase):
st2 = os.stat(support.TESTFN)
self.assertAlmostEqual(st1.st_mtime, st2.st_mtime, delta=10)
+ def test_utime_subsecond(self):
+ asec, amsec = 1, 901
+ atime = asec + amsec * 1e-3
+ msec, mmsec = 5, 901
+ mtime = msec + mmsec * 1e-3
+ filename = self.fname
+ dirname = os.path.dirname(filename)
+ for func in ('utime', 'futimes', 'futimens', 'lutimes', 'utimensat'):
+ if not hasattr(os, func):
+ continue
+ os.utime(filename, (0, 0))
+ if func == 'utime':
+ os.utime(filename, (atime, mtime))
+ elif func == 'futimes':
+ with open(filename, "wb") as f:
+ os.futimes(f.fileno(), (atime, mtime))
+ os.utime(filename, (atime, mtime))
+ elif func == 'futimens':
+ with open(filename, "wb") as f:
+ os.futimens(f.fileno(),
+ (asec, amsec * 1000000),
+ (msec, mmsec * 1000000))
+ elif func == 'lutimes':
+ os.lutimes(filename, (atime, mtime))
+ else:
+ dirfd = os.open(dirname, os.O_RDONLY)
+ try:
+ os.utimensat(dirfd, os.path.basename(filename),
+ (asec, amsec * 1000000),
+ (msec, mmsec * 1000000))
+ finally:
+ os.close(dirfd)
+ st = os.stat(filename)
+ self.assertAlmostEqual(st.st_atime, atime, places=3)
+ self.assertAlmostEqual(st.st_mtime, mtime, places=3)
+
+
# Restrict test to Win32, since there is no guarantee other
# systems support centiseconds
if sys.platform == 'win32':