bpo-40280: Detect presence of time.tzset and thread_time clock (GH-31898)

This commit is contained in:
Christian Heimes 2022-03-15 22:55:35 +02:00 committed by GitHub
parent af0a50de4b
commit a4674f0194
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 11 additions and 2 deletions

View File

@ -5856,6 +5856,9 @@ class ZoneInfoTest(unittest.TestCase):
ldt = tz.fromutc(udt.replace(tzinfo=tz)) ldt = tz.fromutc(udt.replace(tzinfo=tz))
self.assertEqual(ldt.fold, 0) self.assertEqual(ldt.fold, 0)
@unittest.skipUnless(
hasattr(time, "tzset"), "time module has no attribute tzset"
)
def test_system_transitions(self): def test_system_transitions(self):
if ('Riyadh8' in self.zonename or if ('Riyadh8' in self.zonename or
# From tzdata NEWS file: # From tzdata NEWS file:

View File

@ -390,6 +390,9 @@ class StrptimeTests(unittest.TestCase):
"LocaleTime().timezone has duplicate values and " "LocaleTime().timezone has duplicate values and "
"time.daylight but timezone value not set to -1") "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): def test_bad_timezone(self):
# Explicitly test possibility of bad timezone; # Explicitly test possibility of bad timezone;
# when time.tzname[0] == time.tzname[1] and time.daylight # when time.tzname[0] == time.tzname[1] and time.daylight

View File

@ -561,8 +561,9 @@ class TimeTestCase(unittest.TestCase):
'perf_counter', 'perf_counter',
'process_time', 'process_time',
'time', 'time',
'thread_time',
] ]
if hasattr(time, 'thread_time'):
clocks.append('thread_time')
for name in clocks: for name in clocks:
with self.subTest(name=name): with self.subTest(name=name):

View File

@ -1479,7 +1479,9 @@ _PyTime_GetThreadTimeWithInfo(_PyTime_t *tp, _Py_clock_info_t *info)
return 0; 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 #define HAVE_THREAD_TIME
#if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability) #if defined(__APPLE__) && defined(__has_attribute) && __has_attribute(availability)