From a4674f0194067a801f6c6bdb4fc6448e3a40e069 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Tue, 15 Mar 2022 22:55:35 +0200 Subject: bpo-40280: Detect presence of time.tzset and thread_time clock (GH-31898) --- Lib/test/datetimetester.py | 3 +++ Lib/test/test_strptime.py | 3 +++ Lib/test/test_time.py | 3 ++- Modules/timemodule.c | 4 +++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index e208a29..efea40d 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -5856,6 +5856,9 @@ class ZoneInfoTest(unittest.TestCase): ldt = tz.fromutc(udt.replace(tzinfo=tz)) self.assertEqual(ldt.fold, 0) + @unittest.skipUnless( + hasattr(time, "tzset"), "time module has no attribute tzset" + ) def test_system_transitions(self): if ('Riyadh8' in self.zonename or # From tzdata NEWS file: diff --git a/Lib/test/test_strptime.py b/Lib/test/test_strptime.py index 55a0f42..e5f75b7 100644 --- a/Lib/test/test_strptime.py +++ b/Lib/test/test_strptime.py @@ -390,6 +390,9 @@ class StrptimeTests(unittest.TestCase): "LocaleTime().timezone has duplicate values and " "time.daylight but timezone value not set to -1") + @unittest.skipUnless( + hasattr(time, "tzset"), "time module has no attribute tzset" + ) def test_bad_timezone(self): # Explicitly test possibility of bad timezone; # when time.tzname[0] == time.tzname[1] and time.daylight diff --git a/Lib/test/test_time.py b/Lib/test/test_time.py index 57011d1..faac639 100644 --- a/Lib/test/test_time.py +++ b/Lib/test/test_time.py @@ -561,8 +561,9 @@ class TimeTestCase(unittest.TestCase): 'perf_counter', 'process_time', 'time', - 'thread_time', ] + if hasattr(time, 'thread_time'): + clocks.append('thread_time') for name in clocks: with self.subTest(name=name): diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 5b2d9b7..7475ef3 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -1479,7 +1479,9 @@ _PyTime_GetThreadTimeWithInfo(_PyTime_t *tp, _Py_clock_info_t *info) return 0; } -#elif defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_PROCESS_CPUTIME_ID) +#elif defined(HAVE_CLOCK_GETTIME) && \ + defined(CLOCK_PROCESS_CPUTIME_ID) && \ + !defined(__EMSCRIPTEN__) #define HAVE_THREAD_TIME #if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability) -- cgit v0.12