https://github.com/python/cpython/commit/41f29e5d16c314790559e563ce5ca0334fcd54df
commit: 41f29e5d16c314790559e563ce5ca0334fcd54df
branch: main
author: Hood Chatham <[email protected]>
committer: freakboy3742 <[email protected]>
date: 2024-12-12T09:11:00+08:00
summary:
gh-127146: Some expected failures in Emscripten time tests (#127843)
Disables two tests in the test_time suite, and adjusts test_os to reflect
precision limits in Emscripten.
files:
M Lib/test/test_os.py
M Lib/test/test_time.py
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index f3d2ceb263f6f4..8aac92934f6ac0 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -805,14 +805,28 @@ def _test_utime(self, set_time, filename=None):
set_time(filename, (atime_ns, mtime_ns))
st = os.stat(filename)
- if support_subsecond:
- self.assertAlmostEqual(st.st_atime, atime_ns * 1e-9, delta=1e-6)
- self.assertAlmostEqual(st.st_mtime, mtime_ns * 1e-9, delta=1e-6)
+ if support.is_emscripten:
+ # Emscripten timestamps are roundtripped through a 53 bit integer
of
+ # nanoseconds. If we want to represent ~50 years which is an 11
+ # digits number of seconds:
+ # 2*log10(60) + log10(24) + log10(365) + log10(60) + log10(50)
+ # is about 11. Because 53 * log10(2) is about 16, we only have 5
+ # digits worth of sub-second precision.
+ # Some day it would be good to fix this upstream.
+ delta=1e-5
+ self.assertAlmostEqual(st.st_atime, atime_ns * 1e-9, delta=1e-5)
+ self.assertAlmostEqual(st.st_mtime, mtime_ns * 1e-9, delta=1e-5)
+ self.assertAlmostEqual(st.st_atime_ns, atime_ns, delta=1e9 * 1e-5)
+ self.assertAlmostEqual(st.st_mtime_ns, mtime_ns, delta=1e9 * 1e-5)
else:
- self.assertEqual(st.st_atime, atime_ns * 1e-9)
- self.assertEqual(st.st_mtime, mtime_ns * 1e-9)
- self.assertEqual(st.st_atime_ns, atime_ns)
- self.assertEqual(st.st_mtime_ns, mtime_ns)
+ if support_subsecond:
+ self.assertAlmostEqual(st.st_atime, atime_ns * 1e-9,
delta=1e-6)
+ self.assertAlmostEqual(st.st_mtime, mtime_ns * 1e-9,
delta=1e-6)
+ else:
+ self.assertEqual(st.st_atime, atime_ns * 1e-9)
+ self.assertEqual(st.st_mtime, mtime_ns * 1e-9)
+ self.assertEqual(st.st_atime_ns, atime_ns)
+ self.assertEqual(st.st_mtime_ns, mtime_ns)
def test_utime(self):
def set_time(filename, ns):
diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py
index d368f08b610870..92398300f26577 100644
--- a/Lib/test/test_time.py
+++ b/Lib/test/test_time.py
@@ -116,6 +116,7 @@ def test_clock_monotonic(self):
'need time.pthread_getcpuclockid()')
@unittest.skipUnless(hasattr(time, 'clock_gettime'),
'need time.clock_gettime()')
+ @unittest.skipIf(support.is_emscripten, "Fails to find clock")
def test_pthread_getcpuclockid(self):
clk_id = time.pthread_getcpuclockid(threading.get_ident())
self.assertTrue(type(clk_id) is int)
@@ -539,6 +540,9 @@ def test_perf_counter(self):
@unittest.skipIf(
support.is_wasi, "process_time not available on WASI"
)
+ @unittest.skipIf(
+ support.is_emscripten, "process_time present but doesn't exclude sleep"
+ )
def test_process_time(self):
# process_time() should not include time spend during a sleep
start = time.process_time()
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]