MCPcopy Index your code
hub / github.com/RustPython/RustPython / load_tests

Function load_tests

Lib/test/test_datetime.py:10–69  ·  view source on GitHub ↗
(loader, tests, pattern)

Source from the content-addressed store, hash-verified

8TESTS = 'test.datetimetester'
9
10def load_tests(loader, tests, pattern):
11 try:
12 pure_tests = import_fresh_module(TESTS,
13 fresh=['datetime', '_pydatetime', '_strptime'],
14 blocked=['_datetime'])
15 fast_tests = import_fresh_module(TESTS,
16 fresh=['datetime', '_strptime'],
17 blocked=['_pydatetime'])
18 finally:
19 # XXX: import_fresh_module() is supposed to leave sys.module cache untouched,
20 # XXX: but it does not, so we have to cleanup ourselves.
21 for modname in ['datetime', '_datetime', '_strptime']:
22 sys.modules.pop(modname, None)
23
24 test_modules = [
25 pure_tests,
26 # fast_tests # XXX: RUSTPYTHON; not supported yet
27 ]
28 test_suffixes = [
29 "_Pure",
30 # "_Fast" # XXX: RUSTPYTHON; not supported yet
31 ]
32 # XXX(gb) First run all the _Pure tests, then all the _Fast tests. You might
33 # not believe this, but in spite of all the sys.modules trickery running a _Pure
34 # test last will leave a mix of pure and native datetime stuff lying around.
35 for module, suffix in zip(test_modules, test_suffixes):
36 test_classes = []
37 for name, cls in module.__dict__.items():
38 if not isinstance(cls, type):
39 continue
40 if issubclass(cls, unittest.TestCase):
41 test_classes.append(cls)
42 elif issubclass(cls, unittest.TestSuite):
43 suit = cls()
44 test_classes.extend(type(test) for test in suit)
45 test_classes = sorted(set(test_classes), key=lambda cls: cls.__qualname__)
46 for cls in test_classes:
47 cls.__name__ += suffix
48 cls.__qualname__ += suffix
49
50 @functools.wraps(cls, updated=())
51 class Wrapper(cls):
52 @classmethod
53 def setUpClass(cls_, module=module):
54 cls_._save_sys_modules = sys.modules.copy()
55 sys.modules[TESTS] = module
56 sys.modules['datetime'] = module.datetime_module
57 if hasattr(module, '_pydatetime'):
58 sys.modules['_pydatetime'] = module._pydatetime
59 sys.modules['_strptime'] = module._strptime
60 super().setUpClass()
61
62 @classmethod
63 def tearDownClass(cls_):
64 super().tearDownClass()
65 sys.modules.clear()
66 sys.modules.update(cls_._save_sys_modules)
67

Callers

nothing calls this directly

Calls 12

import_fresh_moduleFunction · 0.90
isinstanceFunction · 0.85
issubclassFunction · 0.85
sortedFunction · 0.85
setFunction · 0.85
addTestsMethod · 0.80
loadTestsFromTestCaseMethod · 0.80
clsClass · 0.50
popMethod · 0.45
itemsMethod · 0.45
appendMethod · 0.45
extendMethod · 0.45

Tested by

no test coverage detected