diff options
author | Alexander Belopolsky <alexander.belopolsky@gmail.com> | 2016-08-11 15:01:45 (GMT) |
---|---|---|
committer | Alexander Belopolsky <alexander.belopolsky@gmail.com> | 2016-08-11 15:01:45 (GMT) |
commit | 1b8f26c2ed6a360356285b1ff95d6cdd18e3276c (patch) | |
tree | adc1f55c7c26b6454483e9b07e23cbb6baa261cc | |
parent | 3ff55a815559c91cfd8a7573e63ea6c3b7124484 (diff) | |
download | cpython-1b8f26c2ed6a360356285b1ff95d6cdd18e3276c.zip cpython-1b8f26c2ed6a360356285b1ff95d6cdd18e3276c.tar.gz cpython-1b8f26c2ed6a360356285b1ff95d6cdd18e3276c.tar.bz2 |
Issue #24773: Fix and speed-up ZoneInfoCompleteTest.
* Read the zone.tab file for the list of zones to exclude
the aliases.
* Skip Casablanca and El_Aaiun October 2037 transitions.
-rw-r--r-- | Lib/test/datetimetester.py | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index 726b7fd..65eae72 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -15,7 +15,6 @@ import pickle import random import struct import unittest -import sysconfig from array import array @@ -4591,13 +4590,16 @@ class ZoneInfo(tzinfo): def zonenames(cls, zonedir=None): if zonedir is None: zonedir = cls.zoneroot - for root, _, files in os.walk(zonedir): - for f in files: - p = os.path.join(root, f) - with open(p, 'rb') as o: - magic = o.read(4) - if magic == b'TZif': - yield p[len(zonedir) + 1:] + zone_tab = os.path.join(zonedir, 'zone.tab') + try: + f = open(zone_tab) + except OSError: + return + with f: + for line in f: + line = line.strip() + if line and not line.startswith('#'): + yield line.split()[2] @classmethod def stats(cls, start_year=1): @@ -4692,7 +4694,6 @@ 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: @@ -4765,12 +4766,11 @@ class ZoneInfoTest(unittest.TestCase): try: _time.tzset() for udt, shift in tz.transitions(): - if self.zonename == 'Europe/Tallinn' and udt.date() == date(1999, 10, 31): + if (self.zonename == 'Europe/Tallinn' and udt.date() == date(1999, 10, 31) or + self.zonename.endswith(('Casablanca', 'El_Aaiun')) and + udt.date() == date(2037, 10, 4)): 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, |