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
This commit is contained in:
parent
9796f69533
commit
5a16b64ed2
|
@ -118,7 +118,8 @@ class HumanizeTests(TestCase):
|
||||||
self.assertNotEqual(naturalday_one, naturalday_two)
|
self.assertNotEqual(naturalday_one, naturalday_two)
|
||||||
|
|
||||||
def test_naturaltime(self):
|
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 = [
|
test_list = [
|
||||||
now,
|
now,
|
||||||
now - timedelta(seconds=1),
|
now - timedelta(seconds=1),
|
||||||
|
@ -160,18 +161,21 @@ class HumanizeTests(TestCase):
|
||||||
|
|
||||||
# mock out datetime so these tests don't fail occasionally when the
|
# mock out datetime so these tests don't fail occasionally when the
|
||||||
# test runs too slow
|
# test runs too slow
|
||||||
class MockDateTime(object):
|
class MockDateTime(datetime):
|
||||||
|
@classmethod
|
||||||
def now(self):
|
def now(self):
|
||||||
return now
|
return now
|
||||||
|
|
||||||
def __call__(self, *args, **kwargs):
|
# naturaltime also calls timesince/timeuntil
|
||||||
return datetime(*args, **kwargs)
|
|
||||||
|
|
||||||
from django.contrib.humanize.templatetags import humanize
|
from django.contrib.humanize.templatetags import humanize
|
||||||
orig_datetime = humanize.datetime
|
from django.utils import timesince
|
||||||
humanize.datetime = MockDateTime()
|
orig_humanize_datetime = humanize.datetime
|
||||||
|
orig_timesince_datetime = timesince.datetime.datetime
|
||||||
|
humanize.datetime = MockDateTime
|
||||||
|
timesince.datetime.datetime = MockDateTime
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.humanize_tester(test_list, result_list, 'naturaltime')
|
self.humanize_tester(test_list, result_list, 'naturaltime')
|
||||||
finally:
|
finally:
|
||||||
humanize.datetime = orig_datetime
|
humanize.datetime = orig_humanize_datetime
|
||||||
|
timesince.datetime.datetime = orig_timesince_datetime
|
||||||
|
|
Loading…
Reference in New Issue