Source code for nipy.testing.nosetester

""" Nipy nosetester

Sets doctests to run by default

Use our own doctest plugin (based on that of numpy)
"""
from __future__ import absolute_import
from ..fixes.numpy.testing.nosetester import NoseTester, import_nose

[docs]def fpw_opt_str(): """ Return first-package-wins option string for this version of nose Versions of nose prior to 1.1.0 needed ``=True`` for ``first-package-wins``, versions after won't accept it. changeset: 816:c344a4552d76 http://code.google.com/p/python-nose/issues/detail?id=293 Returns ------- fpw_str : str Either '--first-package-wins' or '--first-package-wins=True' depending on the nose version we are running. """ # protect nose import to provide comprehensible error if missing nose = import_nose() config = nose.config.Config() fpw_str = '--first-package-wins' opt_parser = config.getParser('') opt_def = opt_parser.get_option('--first-package-wins') if opt_def is None: raise RuntimeError('Nose does not accept "first-package-wins"' ' - is this an old nose version?') if opt_def.takes_value(): # the =True variant fpw_str += '=True' return fpw_str
[docs]def prepare_imports(): """ Prepare any imports for testing run At the moment, we prepare matplotlib by trying to make it use a backend that does not need a display. """ try: import matplotlib as mpl except ImportError: pass else: mpl.use('agg')
[docs]class NipyNoseTester(NoseTester): """ Numpy-like testing class * Removes some numpy-specific excludes; * Disables numpy's fierce clearout of module import context for doctests; * Run doctests by default. """ excludes = [] def _get_custom_doctester(self): """ Use our our own doctester """ import_nose() from .doctester import NipyDoctest return NipyDoctest()
[docs] def test(self, label='fast', verbose=1, extra_argv=None, doctests=True, coverage=False): """ Run tests for module using nose. As for numpy tester, except enable tests by default. Parameters ---------- label : {'fast', 'full', '', attribute identifier}, optional Identifies the tests to run. This can be a string to pass to directly the nosetests executable with the '-A' option (an attribute identifier), or one of several special values. Special values are: * 'fast' - the default - which corresponds to the ``nosetests -A`` option of 'not slow'; * 'full' - fast (as above) and slow tests as in the 'no -A' option to nosetests - this is the same as ''; * None or '' - run all tests. verbose : int, optional Verbosity value for test outputs, in the range 1-10. Default is 1. extra_argv : list, optional List with any extra arguments to pass to nosetests. doctests : bool, optional If True, run doctests in module. Default is True. coverage : bool, optional If True, report coverage of nipy code. Default is False. (This requires the `coverage module: <http://nedbatchelder.com/code/modules/coverage.html>`_). Returns ------- result : object Returns the result of running the tests as a ``nose.result.TextTestResult`` object. Notes ----- Each nipy module should expose `test` in its namespace to run all tests for it. For example, to run all tests for nipy.algorithms: >>> import nipy.algorithms >>> nipy.algorithms.test() #doctest: +SKIP """ prepare_imports() if extra_argv is None: extra_argv = [] extra_argv.append(fpw_opt_str()) return super(NipyNoseTester, self).test(label, verbose, extra_argv, doctests, coverage)