mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	bpo-30822: Fix testing of datetime module. (#2530)
Only C implementation was tested.
This commit is contained in:
		
							parent
							
								
									8a8d28501f
								
							
						
					
					
						commit
						98b6bc3bf7
					
				
					 4 changed files with 15 additions and 9 deletions
				
			
		| 
						 | 
					@ -2271,7 +2271,8 @@ def _name_from_offset(delta):
 | 
				
			||||||
         _check_tzinfo_arg, _check_tzname, _check_utc_offset, _cmp, _cmperror,
 | 
					         _check_tzinfo_arg, _check_tzname, _check_utc_offset, _cmp, _cmperror,
 | 
				
			||||||
         _date_class, _days_before_month, _days_before_year, _days_in_month,
 | 
					         _date_class, _days_before_month, _days_before_year, _days_in_month,
 | 
				
			||||||
         _format_time, _is_leap, _isoweek1monday, _math, _ord2ymd,
 | 
					         _format_time, _is_leap, _isoweek1monday, _math, _ord2ymd,
 | 
				
			||||||
         _time, _time_class, _tzinfo_class, _wrap_strftime, _ymd2ord)
 | 
					         _time, _time_class, _tzinfo_class, _wrap_strftime, _ymd2ord,
 | 
				
			||||||
 | 
					         _divide_and_round)
 | 
				
			||||||
    # XXX Since import * above excludes names that start with _,
 | 
					    # XXX Since import * above excludes names that start with _,
 | 
				
			||||||
    # docstring does not get overwritten. In the future, it may be
 | 
					    # docstring does not get overwritten. In the future, it may be
 | 
				
			||||||
    # appropriate to maintain a single module level docstring and
 | 
					    # appropriate to maintain a single module level docstring and
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,8 +61,9 @@ def test_constants(self):
 | 
				
			||||||
        self.assertEqual(datetime.MAXYEAR, 9999)
 | 
					        self.assertEqual(datetime.MAXYEAR, 9999)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_name_cleanup(self):
 | 
					    def test_name_cleanup(self):
 | 
				
			||||||
        if '_Fast' not in str(self):
 | 
					        if '_Pure' in self.__class__.__name__:
 | 
				
			||||||
            return
 | 
					            self.skipTest('Only run for Fast C implementation')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        datetime = datetime_module
 | 
					        datetime = datetime_module
 | 
				
			||||||
        names = set(name for name in dir(datetime)
 | 
					        names = set(name for name in dir(datetime)
 | 
				
			||||||
                    if not name.startswith('__') and not name.endswith('__'))
 | 
					                    if not name.startswith('__') and not name.endswith('__'))
 | 
				
			||||||
| 
						 | 
					@ -72,8 +73,9 @@ def test_name_cleanup(self):
 | 
				
			||||||
        self.assertEqual(names - allowed, set([]))
 | 
					        self.assertEqual(names - allowed, set([]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_divide_and_round(self):
 | 
					    def test_divide_and_round(self):
 | 
				
			||||||
        if '_Fast' in str(self):
 | 
					        if '_Fast' in self.__class__.__name__:
 | 
				
			||||||
            return
 | 
					            self.skipTest('Only run for Pure Python implementation')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        dar = datetime_module._divide_and_round
 | 
					        dar = datetime_module._divide_and_round
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertEqual(dar(-10, -3), 3)
 | 
					        self.assertEqual(dar(-10, -3), 3)
 | 
				
			||||||
| 
						 | 
					@ -2851,7 +2853,7 @@ def tzname(self, dt): return self.tz
 | 
				
			||||||
        self.assertRaises(TypeError, t.strftime, "%Z")
 | 
					        self.assertRaises(TypeError, t.strftime, "%Z")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Issue #6697:
 | 
					        # Issue #6697:
 | 
				
			||||||
        if '_Fast' in str(self):
 | 
					        if '_Fast' in self.__class__.__name__:
 | 
				
			||||||
            Badtzname.tz = '\ud800'
 | 
					            Badtzname.tz = '\ud800'
 | 
				
			||||||
            self.assertRaises(ValueError, t.strftime, "%Z")
 | 
					            self.assertRaises(ValueError, t.strftime, "%Z")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,7 +20,7 @@
 | 
				
			||||||
# XXX(gb) First run all the _Pure tests, then all the _Fast tests.  You might
 | 
					# 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
 | 
					# 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 last will leave a mix of pure and native datetime stuff lying around.
 | 
				
			||||||
test_classes = []
 | 
					all_test_classes = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for module, suffix in zip(test_modules, test_suffixes):
 | 
					for module, suffix in zip(test_modules, test_suffixes):
 | 
				
			||||||
    test_classes = []
 | 
					    test_classes = []
 | 
				
			||||||
| 
						 | 
					@ -33,7 +33,8 @@
 | 
				
			||||||
            suit = cls()
 | 
					            suit = cls()
 | 
				
			||||||
            test_classes.extend(type(test) for test in suit)
 | 
					            test_classes.extend(type(test) for test in suit)
 | 
				
			||||||
    for cls in test_classes:
 | 
					    for cls in test_classes:
 | 
				
			||||||
        cls.__name__ = name + suffix
 | 
					        cls.__name__ += suffix
 | 
				
			||||||
 | 
					        cls.__qualname__ += suffix
 | 
				
			||||||
        @classmethod
 | 
					        @classmethod
 | 
				
			||||||
        def setUpClass(cls_, module=module):
 | 
					        def setUpClass(cls_, module=module):
 | 
				
			||||||
            cls_._save_sys_modules = sys.modules.copy()
 | 
					            cls_._save_sys_modules = sys.modules.copy()
 | 
				
			||||||
| 
						 | 
					@ -46,9 +47,10 @@ def tearDownClass(cls_):
 | 
				
			||||||
            sys.modules.update(cls_._save_sys_modules)
 | 
					            sys.modules.update(cls_._save_sys_modules)
 | 
				
			||||||
        cls.setUpClass = setUpClass
 | 
					        cls.setUpClass = setUpClass
 | 
				
			||||||
        cls.tearDownClass = tearDownClass
 | 
					        cls.tearDownClass = tearDownClass
 | 
				
			||||||
 | 
					    all_test_classes.extend(test_classes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_main():
 | 
					def test_main():
 | 
				
			||||||
    run_unittest(*test_classes)
 | 
					    run_unittest(*all_test_classes)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == "__main__":
 | 
					if __name__ == "__main__":
 | 
				
			||||||
    test_main()
 | 
					    test_main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1602,6 +1602,7 @@ Doobee R. Tzeck
 | 
				
			||||||
Eren Türkay
 | 
					Eren Türkay
 | 
				
			||||||
Lionel Ulmer
 | 
					Lionel Ulmer
 | 
				
			||||||
Adnan Umer
 | 
					Adnan Umer
 | 
				
			||||||
 | 
					Utkarsh Upadhyay
 | 
				
			||||||
Roger Upole
 | 
					Roger Upole
 | 
				
			||||||
Daniel Urban
 | 
					Daniel Urban
 | 
				
			||||||
Michael Urman
 | 
					Michael Urman
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue