summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-04-25 09:31:06 -0400
committerNed Batchelder <ned@nedbatchelder.com>2015-04-25 09:31:06 -0400
commit9cb10daca96cd61bb4c7afdd4affb6c878e22245 (patch)
tree51f1bbc65c91c961763b4d2fc88480003bcb5b9b
parent087da3175829f5fdb0db0c372872b905304cda55 (diff)
downloadpython-coveragepy-git-9cb10daca96cd61bb4c7afdd4affb6c878e22245.tar.gz
Refactor datetime recency testing into a tested test helper
-rw-r--r--tests/coveragetest.py9
-rw-r--r--tests/test_html.py13
-rw-r--r--tests/test_testing.py22
3 files changed, 36 insertions, 8 deletions
diff --git a/tests/coveragetest.py b/tests/coveragetest.py
index 0e80f4a9..1623ef99 100644
--- a/tests/coveragetest.py
+++ b/tests/coveragetest.py
@@ -1,5 +1,6 @@
"""Base test case class for coverage testing."""
+import datetime
import glob
import os
import random
@@ -278,6 +279,14 @@ class CoverageTest(
if not s.startswith(prefix):
self.fail(msg or ("%r doesn't start with %r" % (s, prefix)))
+ def assert_recent_datetime(self, dt, seconds=10, msg=None):
+ """Assert that `dt` marks a time at most `seconds` seconds ago."""
+ age = datetime.datetime.now() - dt
+ # Python2.6 doesn't have total_seconds :(
+ self.assertEqual(age.days, 0, msg)
+ self.assertGreaterEqual(age.seconds, 0, msg)
+ self.assertLessEqual(age.seconds, seconds, msg)
+
def command_line(self, args, ret=OK, _covpkg=None):
"""Run `args` through the command line.
diff --git a/tests/test_html.py b/tests/test_html.py
index 6f0b294a..6f6f42e4 100644
--- a/tests/test_html.py
+++ b/tests/test_html.py
@@ -386,16 +386,13 @@ class HtmlTest(HtmlTestHelpers, CoverageTest):
m = re.search(timestamp_pat, html)
self.assertTrue(m, "Didn't find a timestamp!")
timestamp = datetime.datetime(*map(int, m.groups()))
- age = datetime.datetime.now() - timestamp
- # Python2.6 doesn't have total_seconds :(
- self.assertEqual(age.days, 0)
# The timestamp only records the minute, so the delta could be from
# 12:00 to 12:01:59, or two minutes.
- self.assertLessEqual(
- abs(age.seconds),
- 120,
- "Timestamp is wrong: {0}".format(timestamp)
- )
+ self.assert_recent_datetime(
+ timestamp,
+ seconds=120,
+ msg="Timestamp is wrong: {0}".format(timestamp),
+ )
class HtmlStaticFileTest(CoverageTest):
diff --git a/tests/test_testing.py b/tests/test_testing.py
index 75db7e50..08ff257d 100644
--- a/tests/test_testing.py
+++ b/tests/test_testing.py
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
"""Tests that our test infrastructure is really working!"""
+import datetime
import os
import sys
@@ -80,6 +81,27 @@ class CoverageTestTest(CoverageTest):
with self.assertRaises(AssertionError):
self.assert_starts_with("xyz\nabc", "a")
+ def test_assert_recent_datetime(self):
+ def now_delta(seconds):
+ """Make a datetime `seconds` seconds from now."""
+ return datetime.datetime.now() + datetime.timedelta(seconds=seconds)
+
+ # Default delta is 10 seconds.
+ self.assert_recent_datetime(now_delta(0))
+ self.assert_recent_datetime(now_delta(-9))
+ with self.assertRaises(AssertionError):
+ self.assert_recent_datetime(now_delta(-11))
+ with self.assertRaises(AssertionError):
+ self.assert_recent_datetime(now_delta(1))
+
+ # Delta is settable.
+ self.assert_recent_datetime(now_delta(0), seconds=120)
+ self.assert_recent_datetime(now_delta(-100), seconds=120)
+ with self.assertRaises(AssertionError):
+ self.assert_recent_datetime(now_delta(-1000), seconds=120)
+ with self.assertRaises(AssertionError):
+ self.assert_recent_datetime(now_delta(1), seconds=120)
+
def test_sub_python_is_this_python(self):
# Try it with a Python command.
os.environ['COV_FOOBAR'] = 'XYZZY'