mirror of
https://github.com/python/cpython.git
synced 2024-11-21 12:59:38 +01:00
gh-120242: Fix handling of [setUp,tearDown]Class
in test_datetime
(#120243)
This commit is contained in:
parent
4fc82b6d3b
commit
95f4db88d5
@ -1,5 +1,6 @@
|
||||
import unittest
|
||||
import sys
|
||||
import functools
|
||||
|
||||
from test.support.import_helper import import_fresh_module
|
||||
|
||||
@ -39,21 +40,26 @@ def load_tests(loader, tests, pattern):
|
||||
for cls in test_classes:
|
||||
cls.__name__ += suffix
|
||||
cls.__qualname__ += suffix
|
||||
@classmethod
|
||||
def setUpClass(cls_, module=module):
|
||||
cls_._save_sys_modules = sys.modules.copy()
|
||||
sys.modules[TESTS] = module
|
||||
sys.modules['datetime'] = module.datetime_module
|
||||
if hasattr(module, '_pydatetime'):
|
||||
sys.modules['_pydatetime'] = module._pydatetime
|
||||
sys.modules['_strptime'] = module._strptime
|
||||
@classmethod
|
||||
def tearDownClass(cls_):
|
||||
sys.modules.clear()
|
||||
sys.modules.update(cls_._save_sys_modules)
|
||||
cls.setUpClass = setUpClass
|
||||
cls.tearDownClass = tearDownClass
|
||||
tests.addTests(loader.loadTestsFromTestCase(cls))
|
||||
|
||||
@functools.wraps(cls, updated=())
|
||||
class Wrapper(cls):
|
||||
@classmethod
|
||||
def setUpClass(cls_, module=module):
|
||||
cls_._save_sys_modules = sys.modules.copy()
|
||||
sys.modules[TESTS] = module
|
||||
sys.modules['datetime'] = module.datetime_module
|
||||
if hasattr(module, '_pydatetime'):
|
||||
sys.modules['_pydatetime'] = module._pydatetime
|
||||
sys.modules['_strptime'] = module._strptime
|
||||
super().setUpClass()
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls_):
|
||||
super().tearDownClass()
|
||||
sys.modules.clear()
|
||||
sys.modules.update(cls_._save_sys_modules)
|
||||
|
||||
tests.addTests(loader.loadTestsFromTestCase(Wrapper))
|
||||
return tests
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user