Skip to content

Commit 863a0bd

Browse files
[3.13] gh-120242: Fix handling of [setUp,tearDown]Class in test_datetime (GH-120243) (#120259)
gh-120242: Fix handling of `[setUp,tearDown]Class` in `test_datetime` (GH-120243) (cherry picked from commit 95f4db8) Co-authored-by: Nikita Sobolev <[email protected]>
1 parent 3be7e91 commit 863a0bd

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

Lib/test/test_datetime.py

+21-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import unittest
22
import sys
3+
import functools
34

45
from test.support.import_helper import import_fresh_module
56

@@ -39,21 +40,26 @@ def load_tests(loader, tests, pattern):
3940
for cls in test_classes:
4041
cls.__name__ += suffix
4142
cls.__qualname__ += suffix
42-
@classmethod
43-
def setUpClass(cls_, module=module):
44-
cls_._save_sys_modules = sys.modules.copy()
45-
sys.modules[TESTS] = module
46-
sys.modules['datetime'] = module.datetime_module
47-
if hasattr(module, '_pydatetime'):
48-
sys.modules['_pydatetime'] = module._pydatetime
49-
sys.modules['_strptime'] = module._strptime
50-
@classmethod
51-
def tearDownClass(cls_):
52-
sys.modules.clear()
53-
sys.modules.update(cls_._save_sys_modules)
54-
cls.setUpClass = setUpClass
55-
cls.tearDownClass = tearDownClass
56-
tests.addTests(loader.loadTestsFromTestCase(cls))
43+
44+
@functools.wraps(cls, updated=())
45+
class Wrapper(cls):
46+
@classmethod
47+
def setUpClass(cls_, module=module):
48+
cls_._save_sys_modules = sys.modules.copy()
49+
sys.modules[TESTS] = module
50+
sys.modules['datetime'] = module.datetime_module
51+
if hasattr(module, '_pydatetime'):
52+
sys.modules['_pydatetime'] = module._pydatetime
53+
sys.modules['_strptime'] = module._strptime
54+
super().setUpClass()
55+
56+
@classmethod
57+
def tearDownClass(cls_):
58+
super().tearDownClass()
59+
sys.modules.clear()
60+
sys.modules.update(cls_._save_sys_modules)
61+
62+
tests.addTests(loader.loadTestsFromTestCase(Wrapper))
5763
return tests
5864

5965

0 commit comments

Comments
 (0)