diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2012-02-08 02:01:11 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2012-02-08 02:01:11 (GMT) |
commit | be557dedf9fdf724c786aa030c3b9af4400d7a43 (patch) | |
tree | 42b32dcaee7a795b4ec618615724cfd46283de45 /Lib/test/test_os.py | |
parent | f4c54ff5cd57533f2c655a4fefb7b726341cbc8d (diff) | |
download | cpython-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.py | 37 |
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': |