Source code for haas.plugins.runner

# -*- coding: utf-8 -*-
# Copyright (c) 2013-2014 Simon Jagoe
# All rights reserved.
#
# This software may be modified and distributed under the terms
# of the 3-clause BSD license.  See the LICENSE.txt file for details.
from __future__ import absolute_import, unicode_literals

from .i_runner_plugin import IRunnerPlugin
import warnings


[docs]class BaseTestRunner(IRunnerPlugin): """A test runner class that does not print any output itself. """ def __init__(self, warnings=None): self.warnings = warnings
[docs] @classmethod def from_args(cls, args, arg_prefix): return cls(warnings=args.warnings)
[docs] @classmethod def add_parser_arguments(self, parser, option_prefix, dest_prefix): parser.add_argument( "--warnings", default=None, choices=[ "default", "error", "ignore", "always", "module", "once" ], help=("Warnings filter action, specifying whether warnings " "during tests are ignored, displayed, or turned into " "errors. The interpretation of the different choices " "matches Python's warnings module.") )
[docs] def run(self, result_collector, test): """Run the given test case or test suite. """ with warnings.catch_warnings(): if self.warnings: # if self.warnings is set, use it to filter all the warnings warnings.simplefilter(self.warnings) # if the filter is 'default' or 'always', special-case the # warnings from the deprecated unittest methods to show them # no more than once per module, because they can be fairly # noisy. The -Wd and -Wa flags can be used to bypass this # only when self.warnings is None. if self.warnings in ['default', 'always']: warnings.filterwarnings( 'module', category=DeprecationWarning, message=r'Please use assert\w+ instead.') result_collector.startTestRun() try: test(result_collector) finally: result_collector.stopTestRun() return result_collector