summaryrefslogtreecommitdiff
path: root/tests/coveragetest.py
diff options
context:
space:
mode:
authorNed Batchelder <ned@nedbatchelder.com>2015-10-03 16:34:52 -0400
committerNed Batchelder <ned@nedbatchelder.com>2015-10-03 16:34:52 -0400
commitb27f9eab849696b46e9fbb84dcdc0f34078684d1 (patch)
treee55aacebb0b88fa430cf3b174f8eac041fbd4ef3 /tests/coveragetest.py
parent9a3c3e8b65070b31daf31cc149f28241cead89bf (diff)
downloadpython-coveragepy-git-b27f9eab849696b46e9fbb84dcdc0f34078684d1.tar.gz
A better way to test for warnings.
Diffstat (limited to 'tests/coveragetest.py')
-rw-r--r--tests/coveragetest.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/coveragetest.py b/tests/coveragetest.py
index 7db25de0..18524758 100644
--- a/tests/coveragetest.py
+++ b/tests/coveragetest.py
@@ -3,6 +3,7 @@
"""Base test case class for coverage.py testing."""
+import contextlib
import datetime
import glob
import os
@@ -251,6 +252,30 @@ class CoverageTest(
return cov
+ @contextlib.contextmanager
+ def assert_warnings(self, cov, warnings):
+ """A context manager to check that particular warnings happened in `cov`."""
+ saved_warnings = []
+ def capture_warning(msg):
+ """A fake implementation of Coverage._warn, to capture warnings."""
+ saved_warnings.append(msg)
+
+ original_warn = cov._warn
+ cov._warn = capture_warning
+
+ try:
+ yield
+ except:
+ raise
+ else:
+ for warning_regex in warnings:
+ for saved in saved_warnings:
+ if re.search(warning_regex, saved):
+ break
+ else:
+ self.fail("Didn't find warning %r in %r" % (warning_regex, saved_warnings))
+ cov._warn = original_warn
+
def nice_file(self, *fparts):
"""Canonicalize the file name composed of the parts in `fparts`."""
fname = os.path.join(*fparts)