mirror of
https://github.com/python/cpython.git
synced 2025-08-15 22:30:42 +00:00
[3.12] gh-120242: Fix handling of [setUp,tearDown]Class
in test_datetime
(GH-120243) (#120260)
gh-120242: Fix handling of `[setUp,tearDown]Class` in `test_datetime` (GH-120243)
(cherry picked from commit 95f4db88d5
)
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
This commit is contained in:
parent
1e7903d549
commit
479655a27a
1 changed files with 21 additions and 15 deletions
|
@ -1,5 +1,6 @@
|
||||||
import unittest
|
import unittest
|
||||||
import sys
|
import sys
|
||||||
|
import functools
|
||||||
|
|
||||||
from test.support.import_helper import import_fresh_module
|
from test.support.import_helper import import_fresh_module
|
||||||
|
|
||||||
|
@ -39,21 +40,26 @@ def load_tests(loader, tests, pattern):
|
||||||
for cls in test_classes:
|
for cls in test_classes:
|
||||||
cls.__name__ += suffix
|
cls.__name__ += suffix
|
||||||
cls.__qualname__ += suffix
|
cls.__qualname__ += suffix
|
||||||
@classmethod
|
|
||||||
def setUpClass(cls_, module=module):
|
@functools.wraps(cls, updated=())
|
||||||
cls_._save_sys_modules = sys.modules.copy()
|
class Wrapper(cls):
|
||||||
sys.modules[TESTS] = module
|
@classmethod
|
||||||
sys.modules['datetime'] = module.datetime_module
|
def setUpClass(cls_, module=module):
|
||||||
if hasattr(module, '_pydatetime'):
|
cls_._save_sys_modules = sys.modules.copy()
|
||||||
sys.modules['_pydatetime'] = module._pydatetime
|
sys.modules[TESTS] = module
|
||||||
sys.modules['_strptime'] = module._strptime
|
sys.modules['datetime'] = module.datetime_module
|
||||||
@classmethod
|
if hasattr(module, '_pydatetime'):
|
||||||
def tearDownClass(cls_):
|
sys.modules['_pydatetime'] = module._pydatetime
|
||||||
sys.modules.clear()
|
sys.modules['_strptime'] = module._strptime
|
||||||
sys.modules.update(cls_._save_sys_modules)
|
super().setUpClass()
|
||||||
cls.setUpClass = setUpClass
|
|
||||||
cls.tearDownClass = tearDownClass
|
@classmethod
|
||||||
tests.addTests(loader.loadTestsFromTestCase(cls))
|
def tearDownClass(cls_):
|
||||||
|
super().tearDownClass()
|
||||||
|
sys.modules.clear()
|
||||||
|
sys.modules.update(cls_._save_sys_modules)
|
||||||
|
|
||||||
|
tests.addTests(loader.loadTestsFromTestCase(Wrapper))
|
||||||
return tests
|
return tests
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue