From 611adf246639711489bc63382743fdd6428b4fe3 Mon Sep 17 00:00:00 2001 From: Alexander Belopolsky Date: Tue, 26 Jul 2016 12:23:16 -0400 Subject: [PATCH] Issue #24773: Fixed tests failures on systems with 32-bit time_t. Several 32-bit systems have issues with transitions in the year 2037. This is a bug in the system C library since time_t does not overflow until 2038, but let's skip tests starting from 2037 to work around those bugs. --- Lib/test/datetimetester.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index 78f0a8726fa4cc..d17c996b2363f1 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -15,6 +15,7 @@ import random import struct import unittest +import sysconfig from array import array @@ -4675,6 +4676,7 @@ class ZoneInfoTest(unittest.TestCase): zonename = 'America/New_York' def setUp(self): + self.sizeof_time_t = sysconfig.get_config_var('SIZEOF_TIME_T') if sys.platform == "win32": self.skipTest("Skipping zoneinfo tests on Windows") try: @@ -4750,6 +4752,9 @@ def test_system_transitions(self): if self.zonename == 'Europe/Tallinn' and udt.date() == date(1999, 10, 31): print("Skip %s %s transition" % (self.zonename, udt)) continue + if self.sizeof_time_t == 4 and udt.year >= 2037: + print("Skip %s %s transition for 32-bit time_t" % (self.zonename, udt)) + continue s0 = (udt - datetime(1970, 1, 1)) // SEC ss = shift // SEC # shift seconds for x in [-40 * 3600, -20*3600, -1, 0,