Source code for nose2.plugins.dundertest

"""
This plugin implements :func:`startTestRun`, which excludes all test objects
that define a ``__test__`` attribute that evaluates to ``False``.
"""
from unittest import TestSuite

from nose2 import events

__unittest = True


[docs]class DunderTestFilter(events.Plugin): """ Exclude all tests defining a ``__test__`` attribute that evaluates to ``False``. """ alwaysOn = True
[docs] def startTestRun(self, event): """ Recurse :attr:`event.suite` and remove all test suites and test cases that define a ``__test__`` attribute that evaluates to ``False``. """ self.removeNonTests(event.suite)
def removeNonTests(self, suite): for test in list(suite): if not getattr(test, "__test__", True): suite._tests.remove(test) elif isinstance(test, TestSuite): self.removeNonTests(test)