]> granicus.if.org Git - python/commitdiff
Issue #24773: Fixed tests failures on systems with 32-bit time_t.
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>
Tue, 26 Jul 2016 16:23:16 +0000 (12:23 -0400)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>
Tue, 26 Jul 2016 16:23:16 +0000 (12:23 -0400)
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

index 78f0a8726fa4cc88de8f41edefb7696775f03b96..d17c996b2363f14d669f9eb0bdb081c8735bc685 100644 (file)
@@ -15,6 +15,7 @@ import pickle
 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 @@ class ZoneInfoTest(unittest.TestCase):
                 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,