Skip to content

Commit 77d003c

Browse files
fix timezone constants when timezone rules change mid-year
1 parent 90dc8bd commit 77d003c

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

‎Lib/test/test_time.py‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,31 @@ def test_tzset(self):
561561
del environ['TZ']
562562
time.tzset()
563563

564+
# verify the libc-backed values against localtime() under a controlled timezone.
565+
old_tz = os.environ.get("TZ")
566+
try:
567+
os.environ["TZ"] = "America/Vancouver"
568+
time.tzset()
569+
570+
local_time = time.localtime()
571+
572+
self.assertEqual(
573+
time.tzname[0],
574+
local_time.tm_zone
575+
)
576+
577+
self.assertEqual(
578+
time.timezone,
579+
-time.gmtime(time.mktime(local_time)).tm_gmtoff
580+
)
581+
582+
finally:
583+
if old_tz is None:
584+
os.environ.pop("TZ", None)
585+
else:
586+
os.environ["TZ"] = old_tz
587+
time.tzset()
588+
564589
def test_insane_timestamps(self):
565590
# It's possible that some platform maps time_t to double,
566591
# and that this test will fail there. This test should

‎configure.ac‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7796,6 +7796,8 @@ CPPFLAGS=$ac_save_cppflags
77967796
])dnl have_curses != no
77977797
])dnl save env
77987798

7799+
AC_CHECK_DECLS([tzname], [], [], [[@%:@include <time.h>]])
7800+
77997801
AC_MSG_NOTICE([checking for device files])
78007802

78017803
dnl NOTE: Inform user how to proceed with files when cross compiling.

0 commit comments

Comments
 (0)