diff options
author | Stefan Behnel <stefan_ml@behnel.de> | 2022-02-16 19:55:23 +0100 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2022-02-16 19:55:23 +0100 |
commit | 2cf17f195c746ae0e9fd13840bec8d4a2f1afb23 (patch) | |
tree | fe95cd41b77657268e3327dc3eb4d2255cd7529c | |
parent | f61e759dcc2fb5ab3e9398a43468d44b7a9a6818 (diff) | |
download | cython-2cf17f195c746ae0e9fd13840bec8d4a2f1afb23.tar.gz |
Enable faulthandler around the test runs to get a notice on shard crashes.
-rwxr-xr-x | runtests.py | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/runtests.py b/runtests.py index 591746a87..5f707b9b5 100755 --- a/runtests.py +++ b/runtests.py @@ -2501,7 +2501,33 @@ def runtests(options, cmd_args, coverage=None): except AttributeError: pass # not available on PyPy - result = test_runner.run(test_suite) + enable_faulthandler = False + try: + import faulthandler + except ImportError: + pass + else: + enable_faulthandler = not faulthandler.is_enabled() + if enable_faulthandler: + faulthandler.enable() + + # Run the collected tests. + try: + if options.shard_num > -1: + sys.stderr.write("Tests in shard %d starting" % options.shard_num) + result = test_runner.run(test_suite) + except Exception as exc: + # Make sure we print exceptions also from shards. + if options.shard_num > -1: + sys.stderr.write("Tests in shard %d crashed: %s" % (options.shard_num, exc)) + import traceback + traceback.print_exc() + finally: + if enable_faulthandler: + faulthandler.disable() + if options.shard_num > -1: + sys.stderr.write("Tests in shard %d terminated (%s)" % ( + options.shard_num, sys.exc_info()[1] or "no crash")) if common_utility_dir and options.shard_num < 0 and options.cleanup_workdir: shutil.rmtree(common_utility_dir) |