changeset: 74827:58bd6a58365d user: Victor Stinner date: Wed Feb 08 04:09:37 2012 +0100 files: Lib/test/test_os.py Modules/posixmodule.c description: Issue #13964: Skip os.*utime*() tests if os.stat() doesn't support timestamp with a subsecond resolution diff -r 478fb4869c99 -r 58bd6a58365d Lib/test/test_os.py --- a/Lib/test/test_os.py Wed Feb 08 03:36:25 2012 +0100 +++ b/Lib/test/test_os.py Wed Feb 08 04:09:37 2012 +0100 @@ -27,6 +27,14 @@ except ImportError: threading = None +os.stat_float_times(True) +st = os.stat(__file__) +stat_supports_subsecond = ( + # check if float and int timestamps are different + (st.st_atime != st[7]) + or (st.st_mtime != st[8]) + or (st.st_ctime != st[9])) + # Detect whether we're on a Linux system that uses the (now outdated # and unmaintained) linuxthreads threading library. There's an issue # when combining linuxthreads with a failed execv call: see @@ -300,6 +308,8 @@ st2 = os.stat(support.TESTFN) self.assertAlmostEqual(st1.st_mtime, st2.st_mtime, delta=10) + @unittest.skipUnless(stat_supports_subsecond, + "os.stat() doesn't has a subsecond resolution") def _test_utime_subsecond(self, set_time_func): asec, amsec = 1, 901 atime = asec + amsec * 1e-3 @@ -308,6 +318,7 @@ filename = self.fname os.utime(filename, (0, 0)) set_time_func(filename, atime, mtime) + os.stat_float_times(True) st = os.stat(filename) self.assertAlmostEqual(st.st_atime, atime, places=3) self.assertAlmostEqual(st.st_mtime, mtime, places=3) diff -r 478fb4869c99 -r 58bd6a58365d Modules/posixmodule.c --- a/Modules/posixmodule.c Wed Feb 08 03:36:25 2012 +0100 +++ b/Modules/posixmodule.c Wed Feb 08 04:09:37 2012 +0100 @@ -3539,7 +3539,6 @@ mod = fmod(d, 1.0); mod *= 1e9; *nsec = (long)mod; - printf("%g => (%u, %li)\n", d, *sec, *nsec); return 0; } #if SIZEOF_TIME_T> SIZEOF_LONG

AltStyle によって変換されたページ (->オリジナル) /