| 
									
										
										
										
											2002-12-16 20:18:38 +00:00
										 |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2010-07-23 19:25:47 +00:00
										 |  |  | import sys | 
					
						
							| 
									
										
										
										
											2014-10-03 11:25:30 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-23 19:25:47 +00:00
										 |  |  | from test.support import import_fresh_module, run_unittest | 
					
						
							| 
									
										
										
										
											2012-02-20 23:37:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-23 19:25:47 +00:00
										 |  |  | TESTS = 'test.datetimetester' | 
					
						
							| 
									
										
										
										
											2012-02-20 23:37:36 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-23 19:25:47 +00:00
										 |  |  | try: | 
					
						
							|  |  |  |     pure_tests = import_fresh_module(TESTS, fresh=['datetime', '_strptime'], | 
					
						
							|  |  |  |                                      blocked=['_datetime']) | 
					
						
							|  |  |  |     fast_tests = import_fresh_module(TESTS, fresh=['datetime', | 
					
						
							|  |  |  |                                                    '_datetime', '_strptime']) | 
					
						
							|  |  |  | finally: | 
					
						
							| 
									
										
										
										
											2014-10-03 11:25:30 +02:00
										 |  |  |     # XXX: import_fresh_module() is supposed to leave sys.module cache untouched, | 
					
						
							|  |  |  |     # XXX: but it does not, so we have to cleanup ourselves. | 
					
						
							|  |  |  |     for modname in ['datetime', '_datetime', '_strptime']: | 
					
						
							|  |  |  |         sys.modules.pop(modname, None) | 
					
						
							| 
									
										
										
										
											2010-07-23 19:25:47 +00:00
										 |  |  | test_modules = [pure_tests, fast_tests] | 
					
						
							|  |  |  | test_suffixes = ["_Pure", "_Fast"] | 
					
						
							| 
									
										
										
										
											2012-02-20 23:37:36 +01:00
										 |  |  | # XXX(gb) First run all the _Pure tests, then all the _Fast tests.  You might | 
					
						
							|  |  |  | # not believe this, but in spite of all the sys.modules trickery running a _Pure | 
					
						
							|  |  |  | # test last will leave a mix of pure and native datetime stuff lying around. | 
					
						
							|  |  |  | test_classes = [] | 
					
						
							| 
									
										
										
										
											2010-07-23 19:25:47 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | for module, suffix in zip(test_modules, test_suffixes): | 
					
						
							|  |  |  |     for name, cls in module.__dict__.items(): | 
					
						
							| 
									
										
										
										
											2012-02-20 23:37:36 +01:00
										 |  |  |         if not (isinstance(cls, type) and issubclass(cls, unittest.TestCase)): | 
					
						
							|  |  |  |             continue | 
					
						
							|  |  |  |         cls.__name__ = name + suffix | 
					
						
							|  |  |  |         @classmethod | 
					
						
							|  |  |  |         def setUpClass(cls_, module=module): | 
					
						
							|  |  |  |             cls_._save_sys_modules = sys.modules.copy() | 
					
						
							|  |  |  |             sys.modules[TESTS] = module | 
					
						
							|  |  |  |             sys.modules['datetime'] = module.datetime_module | 
					
						
							|  |  |  |             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 | 
					
						
							|  |  |  |         test_classes.append(cls) | 
					
						
							| 
									
										
										
										
											2004-09-16 01:30:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-16 20:18:38 +00:00
										 |  |  | def test_main(): | 
					
						
							| 
									
										
										
										
											2012-02-20 23:37:36 +01:00
										 |  |  |     run_unittest(*test_classes) | 
					
						
							| 
									
										
										
										
											2002-12-16 20:18:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     test_main() |