Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Avoid spurious failures in naturaltime tests.

Previous fix didn't cover timesince module, which naturaltime delegates to
under certain conditions. Extended mock of datetime to timesince module, and
switched to a fixed datetime rather than now() for testing, for more
reproducible tests (failures in mock will fail fast, rather than sporadically).

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17038 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 5a16b64ed29301fc7eb04405dac6ca4f58f550d2 1 parent 9796f69
Carl Meyer carljm authored
Showing with 12 additions and 8 deletions.
  1. +12 −8 django/contrib/humanize/tests.py
20 django/contrib/humanize/tests.py
View
@@ -118,7 +118,8 @@ def test_naturalday_tz(self):
self.assertNotEqual(naturalday_one, naturalday_two)
def test_naturaltime(self):
- now = datetime.now()
+ # we're going to mock datetime.datetime, so use a fixed datetime
+ now = datetime(2011, 8, 15)
test_list = [
now,
now - timedelta(seconds=1),
@@ -160,18 +161,21 @@ def test_naturaltime(self):
# mock out datetime so these tests don't fail occasionally when the
# test runs too slow
- class MockDateTime(object):
+ class MockDateTime(datetime):
+ @classmethod
def now(self):
return now
- def __call__(self, *args, **kwargs):
- return datetime(*args, **kwargs)
-
+ # naturaltime also calls timesince/timeuntil
from django.contrib.humanize.templatetags import humanize
- orig_datetime = humanize.datetime
- humanize.datetime = MockDateTime()
+ from django.utils import timesince
+ orig_humanize_datetime = humanize.datetime
+ orig_timesince_datetime = timesince.datetime.datetime
+ humanize.datetime = MockDateTime
+ timesince.datetime.datetime = MockDateTime
try:
self.humanize_tester(test_list, result_list, 'naturaltime')
finally:
- humanize.datetime = orig_datetime
+ humanize.datetime = orig_humanize_datetime
+ timesince.datetime.datetime = orig_timesince_datetime
Please sign in to comment.
Something went wrong with that request. Please try again.