From 4cea5d2ea85779b185d85cdf91a8b4ac2effd583 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Thu, 19 Jan 2012 11:27:26 +0000 Subject: disable logging output while unit tests are run --- CoverageTestRunner.py | 25 +++++++++++++++++++++++-- NEWS | 4 +++- subdir/foo.py | 3 +++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/CoverageTestRunner.py b/CoverageTestRunner.py index 04cd791..0917611 100644 --- a/CoverageTestRunner.py +++ b/CoverageTestRunner.py @@ -20,9 +20,19 @@ import os import imp import sys import time +import logging -__version__ = '1.7.1' +__version__ = '1.8' + + + +class AllowNothing(logging.Filter): + + '''A logging library filter that disables everything.''' + + def filter(self, record): + return False class CoverageTestResult(unittest.TestResult): @@ -89,7 +99,8 @@ class CoverageTestRunner: self._module_pairs = [] self._missing_test_modules = [] self._excluded_modules = [] - + self.allow_nothing = AllowNothing() + def add_pair(self, module_pathname, test_module_pathname): """Add a module and its test module to list of tests.""" self._module_pairs.append((module_pathname, test_module_pathname)) @@ -165,6 +176,14 @@ class CoverageTestRunner: print "%s: %s" % (flavor, str(test)) print str(error) + def enable_logging(self): + logger = logging.getLogger() + logger.removeFilter(self.allow_nothing) + + def disable_logging(self): + logger = logging.getLogger() + logger.addFilter(self.allow_nothing) + def run(self): start_time = time.time() @@ -183,7 +202,9 @@ class CoverageTestRunner: sys.path.insert(0, os.path.dirname(module.__file__)) reload(module) del sys.path[0] + self.disable_logging() suite.run(result) + self.enable_logging() coverage.stop() filename, stmts, excluded, missed, missed_desc = \ coverage.analysis2(module) diff --git a/NEWS b/NEWS index e867995..2d8d2e1 100644 --- a/NEWS +++ b/NEWS @@ -1,11 +1,13 @@ NEWS about CoverageTestRunner ============================= -Version 1.8, released UNRELEASED +Version 1.8, released 2012-01-19 -------------------------------- * Progress reporting is now disabled when output does not go to a terminal. This will make build logs prettier. +* `logging` output is now disabled when unit tests are run. This means that + individual projects no longer need to hide the output themselves. Version 1.7.1, released 2011-09-04 -------------------------------- diff --git a/subdir/foo.py b/subdir/foo.py index 711ab4d..51a5dde 100644 --- a/subdir/foo.py +++ b/subdir/foo.py @@ -1,6 +1,9 @@ +import logging + class Foo: def foo(self, a): + logging.error('this should not be displayed when testrun runs') if a: return True elif False: # pragma: no cover -- cgit v1.2.1