summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>2016-07-24 18:39:28 (GMT)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>2016-07-24 18:39:28 (GMT)
commit4719ae7567d3218d6e8ab6d729e07c3abbd66800 (patch)
tree2aaf2c2527b24fccbaf4ab898de28a64081c59ee
parent8dadb2155bbb05bf29b3c5a315d0c9a9eb4d865e (diff)
downloadcpython-4719ae7567d3218d6e8ab6d729e07c3abbd66800.zip
cpython-4719ae7567d3218d6e8ab6d729e07c3abbd66800.tar.gz
cpython-4719ae7567d3218d6e8ab6d729e07c3abbd66800.tar.bz2
Issue #24773: Made ZoneInfoCompleteTest a TestSuit.
This should improve the diagnostic and progress reports.
-rw-r--r--Lib/test/datetimetester.py39
-rw-r--r--Lib/test/test_datetime.py10
2 files changed, 29 insertions, 20 deletions
diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py
index 3ffafa7..bb0dae5 100644
--- a/Lib/test/datetimetester.py
+++ b/Lib/test/datetimetester.py
@@ -2,7 +2,7 @@
See http://www.zope.org/Members/fdrake/DateTimeWiki/TestCases
"""
-from test.support import requires
+from test.support import is_resource_enabled
import itertools
import bisect
@@ -1726,7 +1726,7 @@ class TestDateTime(TestDate):
# Positional fold:
self.assertRaises(TypeError, self.theclass,
2000, 1, 31, 23, 59, 59, 0, None, 1)
-
+
def test_hash_equality(self):
d = self.theclass(2000, 12, 31, 23, 30, 17)
e = self.theclass(2000, 12, 31, 23, 30, 17)
@@ -4254,7 +4254,7 @@ class TestLocalTimeDisambiguation(unittest.TestCase):
t.replace(1, 1, 1, None, 1)
with self.assertRaises(TypeError):
dt.replace(1, 1, 1, 1, 1, 1, 1, None, 1)
-
+
def test_comparison(self):
t = time(0)
dt = datetime(1, 1, 1)
@@ -4677,10 +4677,7 @@ class ZoneInfoTest(unittest.TestCase):
def setUp(self):
if sys.platform == "win32":
self.skipTest("Skipping zoneinfo tests on Windows")
- try:
- self.tz = ZoneInfo.fromname(self.zonename)
- except FileNotFoundError as err:
- self.skipTest("Skipping %s: %s" % (self.zonename, err))
+ self.tz = ZoneInfo.fromname(self.zonename)
def assertEquivDatetimes(self, a, b):
self.assertEqual((a.replace(tzinfo=None), a.fold, id(a.tzinfo)),
@@ -4741,7 +4738,7 @@ class ZoneInfoTest(unittest.TestCase):
# civil time was generally not solar time in those years.
self.zonename.startswith('right/')):
self.skipTest("Skipping %s" % self.zonename)
- tz = self.tz
+ tz = ZoneInfo.fromname(self.zonename)
TZ = os.environ.get('TZ')
os.environ['TZ'] = self.zonename
try:
@@ -4775,20 +4772,26 @@ class ZoneInfoTest(unittest.TestCase):
_time.tzset()
-class ZoneInfoCompleteTest(unittest.TestCase):
- def test_all(self):
- requires('tzdata', 'test requires tzdata and a long time to run')
- for name in ZoneInfo.zonenames():
- class Test(ZoneInfoTest):
- zonename = name
- for suffix in ['folds', 'gaps', 'system_transitions']:
- test = Test('test_' + suffix)
- result = test.run()
- self.assertTrue(result.wasSuccessful(), name + ' ' + suffix)
+class ZoneInfoCompleteTest(unittest.TestSuite):
+ def __init__(self):
+ tests = []
+ if is_resource_enabled('tzdata'):
+ for name in ZoneInfo.zonenames():
+ Test = type('ZoneInfoTest[%s]' % name, (ZoneInfoTest,), {})
+ Test.zonename = name
+ for method in dir(Test):
+ if method.startswith('test_'):
+ tests.append(Test(method))
+ super().__init__(tests)
# Iran had a sub-minute UTC offset before 1946.
class IranTest(ZoneInfoTest):
zonename = 'Iran'
+def load_tests(loader, standard_tests, pattern):
+ standard_tests.addTest(ZoneInfoCompleteTest())
+ return standard_tests
+
+
if __name__ == "__main__":
unittest.main()
diff --git a/Lib/test/test_datetime.py b/Lib/test/test_datetime.py
index 2d4eb52..242e1bb 100644
--- a/Lib/test/test_datetime.py
+++ b/Lib/test/test_datetime.py
@@ -23,9 +23,16 @@ test_suffixes = ["_Pure", "_Fast"]
test_classes = []
for module, suffix in zip(test_modules, test_suffixes):
+ test_classes = []
for name, cls in module.__dict__.items():
- if not (isinstance(cls, type) and issubclass(cls, unittest.TestCase)):
+ if not isinstance(cls, type):
continue
+ if issubclass(cls, unittest.TestCase):
+ test_classes.append(cls)
+ elif issubclass(cls, unittest.TestSuite):
+ suit = cls()
+ test_classes.extend(type(test) for test in suit)
+ for cls in test_classes:
cls.__name__ = name + suffix
@classmethod
def setUpClass(cls_, module=module):
@@ -39,7 +46,6 @@ for module, suffix in zip(test_modules, test_suffixes):
sys.modules.update(cls_._save_sys_modules)
cls.setUpClass = setUpClass
cls.tearDownClass = tearDownClass
- test_classes.append(cls)
def test_main():
run_unittest(*test_classes)