Skip to content

Commit ecfbbbd

Browse files
gh-143959: Skip datetime Fast tests when _datetime absent
1 parent 3b42bcd commit ecfbbbd

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

Lib/test/test_datetime.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
import sys
33
import functools
44

5-
from test.support.import_helper import import_fresh_module, import_module
6-
5+
from test.support.import_helper import import_fresh_module
76

87
TESTS = 'test.datetimetester'
98

@@ -14,28 +13,26 @@ def load_tests(loader, tests, pattern):
1413
fresh=['datetime', '_pydatetime', '_strptime'],
1514
blocked=['_datetime'],
1615
)
17-
fast_tests = None
1816
try:
19-
import_module('_datetime')
17+
import _datetime
18+
has_datetime = True
2019
except ImportError:
21-
fast_tests = None
22-
else:
23-
fast_tests = import_fresh_module(
24-
TESTS,
25-
fresh=['datetime', '_strptime'],
26-
blocked=['_pydatetime'],
27-
)
20+
has_datetime = False
21+
22+
fast_tests = import_fresh_module(
23+
TESTS,
24+
fresh=['datetime', '_strptime'],
25+
blocked=['_pydatetime'],
26+
)
2827
finally:
2928
# XXX: import_fresh_module() is supposed to leave sys.module cache untouched,
3029
# XXX: but it does not, so we have to cleanup ourselves.
3130
for modname in ['datetime', '_datetime', '_pydatetime', '_strptime']:
3231
sys.modules.pop(modname, None)
3332

34-
test_modules = [pure_tests]
35-
test_suffixes = ["_Pure"]
36-
if fast_tests is not None:
37-
test_modules.append(fast_tests)
38-
test_suffixes.append("_Fast")
33+
test_modules = [pure_tests, fast_tests]
34+
test_suffixes = ["_Pure", "_Fast"]
35+
3936
# XXX(gb) First run all the _Pure tests, then all the _Fast tests. You might
4037
# not believe this, but in spite of all the sys.modules trickery running a _Pure
4138
# test last will leave a mix of pure and native datetime stuff lying around.
@@ -58,6 +55,9 @@ def load_tests(loader, tests, pattern):
5855
class Wrapper(cls):
5956
@classmethod
6057
def setUpClass(cls_, module=module):
58+
if suffix == "_Fast" and not has_datetime:
59+
raise unittest.SkipTest("requires _datetime module")
60+
6161
cls_._save_sys_modules = sys.modules.copy()
6262
sys.modules[TESTS] = module
6363
sys.modules['datetime'] = module.datetime_module

0 commit comments

Comments
 (0)