summaryrefslogtreecommitdiff
path: root/numpy/testing/nosetester.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/testing/nosetester.py')
-rw-r--r--numpy/testing/nosetester.py62
1 files changed, 39 insertions, 23 deletions
diff --git a/numpy/testing/nosetester.py b/numpy/testing/nosetester.py
index 9e27352ab..c6bd9a110 100644
--- a/numpy/testing/nosetester.py
+++ b/numpy/testing/nosetester.py
@@ -108,6 +108,12 @@ class NoseTester(object):
which `NoseTester` is initialized.
"""
+ # Stuff to exclude from tests. These are from numpy.distutils
+ excludes = ['f2py_ext',
+ 'f2py_f90_ext',
+ 'gen_ext',
+ 'pyrex_ext',
+ 'swig_ext']
def __init__(self, package=None):
''' Test class init
@@ -188,6 +194,15 @@ class NoseTester(object):
print "Python version %s" % pyversion
print "nose version %d.%d.%d" % nose.__versioninfo__
+ def _get_custom_doctester(self):
+ """ Return instantiated plugin for doctests
+
+ Allows subclassing of this class to override doctester
+
+ A return value of None means use the nose builtin doctest plugin
+ """
+ from noseclasses import NumpyDoctest
+ return NumpyDoctest()
def prepare_test_args(self, label='fast', verbose=1, extra_argv=None,
doctests=False, coverage=False):
@@ -202,36 +217,37 @@ class NoseTester(object):
test
"""
-
- # if doctests is in the extra args, remove it and set the doctest
- # flag so the NumPy doctester is used instead
- if extra_argv and '--with-doctest' in extra_argv:
- extra_argv.remove('--with-doctest')
- doctests = True
-
+ # fail with nice error message if nose is not present
+ import_nose()
+ # compile argv
argv = self._test_argv(label, verbose, extra_argv)
- if doctests:
- argv += ['--with-numpydoctest']
-
+ # bypass tests noted for exclude
+ for ename in self.excludes:
+ argv += ['--exclude', ename]
+ # our way of doing coverage
if coverage:
argv+=['--cover-package=%s' % self.package_name, '--with-coverage',
'--cover-tests', '--cover-inclusive', '--cover-erase']
-
- # bypass these samples under distutils
- argv += ['--exclude','f2py_ext']
- argv += ['--exclude','f2py_f90_ext']
- argv += ['--exclude','gen_ext']
- argv += ['--exclude','pyrex_ext']
- argv += ['--exclude','swig_ext']
-
- # fail with nice error message if nose is not present
- import_nose()
-
# construct list of plugins
import nose.plugins.builtin
- from noseclasses import NumpyDoctest, KnownFailure, Unplugger
- plugins = [NumpyDoctest(), KnownFailure(), Unplugger()]
+ from noseclasses import KnownFailure, Unplugger
+ plugins = [KnownFailure()]
plugins += [p() for p in nose.plugins.builtin.plugins]
+ # add doctesting if required
+ doctest_argv = '--with-doctest' in argv
+ if doctests == False and doctest_argv:
+ doctests = True
+ plug = self._get_custom_doctester()
+ if plug is None:
+ # use standard doctesting
+ if doctests and not doctest_argv:
+ argv += ['--with-doctest']
+ else: # custom doctesting
+ if doctest_argv: # in fact the unplugger would take care of this
+ argv.remove('--with-doctest')
+ plugins += [Unplugger('doctest'), plug]
+ if doctests:
+ argv += ['--with-' + plug.name]
return argv, plugins
def test(self, label='fast', verbose=1, extra_argv=None, doctests=False,