Skip to content

bpo-30822: Fix testing of datetime module. #2783

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 21, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Lib/datetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -2271,7 +2271,8 @@ def _name_from_offset(delta):
_check_tzinfo_arg, _check_tzname, _check_utc_offset, _cmp, _cmperror,
_date_class, _days_before_month, _days_before_year, _days_in_month,
_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 _,
# docstring does not get overwritten. In the future, it may be
# appropriate to maintain a single module level docstring and
Expand Down
12 changes: 7 additions & 5 deletions Lib/test/datetimetester.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,9 @@ def test_constants(self):
self.assertEqual(datetime.MAXYEAR, 9999)

def test_name_cleanup(self):
if '_Fast' not in str(self):
return
if '_Pure' in self.__class__.__name__:
self.skipTest('Only run for Fast C implementation')

datetime = datetime_module
names = set(name for name in dir(datetime)
if not name.startswith('__') and not name.endswith('__'))
Expand All @@ -72,8 +73,9 @@ def test_name_cleanup(self):
self.assertEqual(names - allowed, set([]))

def test_divide_and_round(self):
if '_Fast' in str(self):
return
if '_Fast' in self.__class__.__name__:
self.skipTest('Only run for Pure Python implementation')

dar = datetime_module._divide_and_round

self.assertEqual(dar(-10, -3), 3)
Expand Down Expand Up @@ -2851,7 +2853,7 @@ def tzname(self, dt): return self.tz
self.assertRaises(TypeError, t.strftime, "%Z")

# Issue #6697:
if '_Fast' in str(self):
if '_Fast' in self.__class__.__name__:
Badtzname.tz = '\ud800'
self.assertRaises(ValueError, t.strftime, "%Z")

Expand Down
8 changes: 5 additions & 3 deletions Lib/test/test_datetime.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
# 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 = []
all_test_classes = []

for module, suffix in zip(test_modules, test_suffixes):
test_classes = []
Expand All @@ -34,7 +34,8 @@
test_classes.extend(type(test) for test in suit)
test_classes = sorted(set(test_classes), key=lambda cls: cls.__qualname__)
for cls in test_classes:
cls.__name__ = name + suffix
cls.__name__ += suffix
cls.__qualname__ += suffix
@classmethod
def setUpClass(cls_, module=module):
cls_._save_sys_modules = sys.modules.copy()
Expand All @@ -47,9 +48,10 @@ def tearDownClass(cls_):
sys.modules.update(cls_._save_sys_modules)
cls.setUpClass = setUpClass
cls.tearDownClass = tearDownClass
all_test_classes.extend(test_classes)

def test_main():
run_unittest(*test_classes)
run_unittest(*all_test_classes)

if __name__ == "__main__":
test_main()
1 change: 1 addition & 0 deletions Misc/ACKS
Original file line number Diff line number Diff line change
Expand Up @@ -1602,6 +1602,7 @@ Doobee R. Tzeck
Eren Türkay
Lionel Ulmer
Adnan Umer
Utkarsh Upadhyay
Roger Upole
Daniel Urban
Michael Urman
Expand Down