diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2015-10-03 16:34:52 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2015-10-03 16:34:52 -0400 |
commit | b27f9eab849696b46e9fbb84dcdc0f34078684d1 (patch) | |
tree | e55aacebb0b88fa430cf3b174f8eac041fbd4ef3 /tests/coveragetest.py | |
parent | 9a3c3e8b65070b31daf31cc149f28241cead89bf (diff) | |
download | python-coveragepy-git-b27f9eab849696b46e9fbb84dcdc0f34078684d1.tar.gz |
A better way to test for warnings.
Diffstat (limited to 'tests/coveragetest.py')
-rw-r--r-- | tests/coveragetest.py | 25 |
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) |