# IPython: modified copy of numpy.testing.noseclasses, so # IPython.external._decorators works without numpy being installed. # These classes implement a "known failure" error class. import os from nose.plugins.errorclass import ErrorClass, ErrorClassPlugin try: import pytest KnownFailureTest = pytest.xfail.Exception except ImportError: class KnownFailureTest(Exception): """Raise this exception to mark a test as a known failing test.""" class KnownFailure(ErrorClassPlugin): '''Plugin that installs a KNOWNFAIL error class for the KnownFailureClass exception. When KnownFailureTest is raised, the exception will be logged in the knownfail attribute of the result, 'K' or 'KNOWNFAIL' (verbose) will be output, and the exception will not be counted as an error or failure.''' enabled = True knownfail = ErrorClass(KnownFailureTest, label='KNOWNFAIL', isfailure=False) def options(self, parser, env=os.environ): env_opt = 'NOSE_WITHOUT_KNOWNFAIL' parser.add_option('--no-knownfail', action='store_true', dest='noKnownFail', default=env.get(env_opt, False), help='Disable special handling of KnownFailureTest ' 'exceptions') def configure(self, options, conf): if not self.can_configure: return self.conf = conf disable = getattr(options, 'noKnownFail', False) if disable: self.enabled = False