Tim Peters | 2a799bf | 2002-12-16 20:18:38 +0000 | [diff] [blame] | 1 | import unittest |
Alexander Belopolsky | cf86e36 | 2010-07-23 19:25:47 +0000 | [diff] [blame^] | 2 | import sys |
| 3 | from test.support import import_fresh_module, run_unittest |
| 4 | TESTS = 'test.datetimetester' |
| 5 | # XXX: import_fresh_module() is supposed to leave sys.module cache untouched, |
| 6 | # XXX: but it does not, so we have to save and restore it ourselves. |
| 7 | save_sys_modules = sys.modules.copy() |
| 8 | try: |
| 9 | pure_tests = import_fresh_module(TESTS, fresh=['datetime', '_strptime'], |
| 10 | blocked=['_datetime']) |
| 11 | fast_tests = import_fresh_module(TESTS, fresh=['datetime', |
| 12 | '_datetime', '_strptime']) |
| 13 | finally: |
| 14 | sys.modules.clear() |
| 15 | sys.modules.update(save_sys_modules) |
| 16 | test_modules = [pure_tests, fast_tests] |
| 17 | test_suffixes = ["_Pure", "_Fast"] |
Tim Peters | 2a799bf | 2002-12-16 20:18:38 +0000 | [diff] [blame] | 18 | |
Alexander Belopolsky | cf86e36 | 2010-07-23 19:25:47 +0000 | [diff] [blame^] | 19 | for module, suffix in zip(test_modules, test_suffixes): |
| 20 | for name, cls in module.__dict__.items(): |
| 21 | if isinstance(cls, type) and issubclass(cls, unittest.TestCase): |
| 22 | name += suffix |
| 23 | cls.__name__ = name |
| 24 | globals()[name] = cls |
| 25 | def setUp(self, module=module, setup=cls.setUp): |
| 26 | self._save_sys_modules = sys.modules.copy() |
| 27 | sys.modules[TESTS] = module |
| 28 | sys.modules['datetime'] = module.datetime_module |
| 29 | sys.modules['_strptime'] = module._strptime |
| 30 | setup(self) |
| 31 | def tearDown(self, teardown=cls.tearDown): |
| 32 | teardown(self) |
| 33 | sys.modules.clear() |
| 34 | sys.modules.update(self._save_sys_modules) |
| 35 | cls.setUp = setUp |
| 36 | cls.tearDown = tearDown |
Tim Peters | 528ca53 | 2004-09-16 01:30:50 +0000 | [diff] [blame] | 37 | |
Tim Peters | 2a799bf | 2002-12-16 20:18:38 +0000 | [diff] [blame] | 38 | def test_main(): |
Alexander Belopolsky | cf86e36 | 2010-07-23 19:25:47 +0000 | [diff] [blame^] | 39 | run_unittest(__name__) |
Tim Peters | 2a799bf | 2002-12-16 20:18:38 +0000 | [diff] [blame] | 40 | |
| 41 | if __name__ == "__main__": |
| 42 | test_main() |