diff options
Diffstat (limited to 'numpy/testing/nose_tools/noseclasses.py')
-rw-r--r-- | numpy/testing/nose_tools/noseclasses.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/numpy/testing/nose_tools/noseclasses.py b/numpy/testing/nose_tools/noseclasses.py index 2f5d05004..9756b9b45 100644 --- a/numpy/testing/nose_tools/noseclasses.py +++ b/numpy/testing/nose_tools/noseclasses.py @@ -7,6 +7,7 @@ from __future__ import division, absolute_import, print_function import os +import sys import doctest import inspect @@ -317,6 +318,31 @@ class KnownFailurePlugin(ErrorClassPlugin): KnownFailure = KnownFailurePlugin # backwards compat +class FPUModeCheckPlugin(Plugin): + """ + Plugin that checks the FPU mode before and after each test, + raising failures if the test changed the mode. + """ + + def prepareTestCase(self, test): + from numpy.core.multiarray_tests import get_fpu_mode + + def run(result): + old_mode = get_fpu_mode() + test.test(result) + new_mode = get_fpu_mode() + + if old_mode != new_mode: + try: + raise AssertionError( + "FPU mode changed from {0:#x} to {1:#x} during the " + "test".format(old_mode, new_mode)) + except AssertionError: + result.addFailure(test, sys.exc_info()) + + return run + + # Class allows us to save the results of the tests in runTests - see runTests # method docstring for details class NumpyTestProgram(nose.core.TestProgram): |