diff --git a/lib/matplotlib/testing/nose/__init__.py b/lib/matplotlib/testing/nose/__init__.py index 0d4f1e19e100..d513c7b14f4b 100644 --- a/lib/matplotlib/testing/nose/__init__.py +++ b/lib/matplotlib/testing/nose/__init__.py @@ -1,6 +1,8 @@ from __future__ import (absolute_import, division, print_function, unicode_literals) +import sys + def get_extra_test_plugins(): from .plugins.performgc import PerformGC @@ -29,12 +31,16 @@ def check_deps(): raise -def test(verbosity=None, coverage=False, switch_backend_warn=True, **kwargs): +def test(verbosity=None, coverage=False, switch_backend_warn=True, + recursionlimit=0, **kwargs): from ... import default_test_modules, get_backend, use old_backend = get_backend() + old_recursionlimit = sys.getrecursionlimit() try: use('agg') + if recursionlimit: + sys.setrecursionlimit(recursionlimit) import nose from nose.plugins import multiprocess @@ -60,6 +66,8 @@ def test(verbosity=None, coverage=False, switch_backend_warn=True, **kwargs): finally: if old_backend.lower() != 'agg': use(old_backend, warn=switch_backend_warn) + if recursionlimit: + sys.setrecursionlimit(old_recursionlimit) return success diff --git a/tests.py b/tests.py index 01c48d0d8f35..5845d976782f 100755 --- a/tests.py +++ b/tests.py @@ -25,6 +25,8 @@ help='Run tests without network connection') parser.add_argument('-j', type=int, help='Shortcut for specifying number of test processes') + parser.add_argument('--recursionlimit', type=int, default=0, + help='Specify recursionlimit for test run') args, extra_args = parser.parse_known_args() if args.no_pep8: @@ -43,5 +45,6 @@ print('Python byte-compilation optimization level: %d' % sys.flags.optimize) - success = test(argv=sys.argv[0:1] + extra_args, switch_backend_warn=False) + success = test(argv=sys.argv[0:1] + extra_args, switch_backend_warn=False, + recursionlimit=args.recursionlimit) sys.exit(not success)