summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2022-02-16 19:55:23 +0100
committerStefan Behnel <stefan_ml@behnel.de>2022-02-16 19:55:23 +0100
commit2cf17f195c746ae0e9fd13840bec8d4a2f1afb23 (patch)
treefe95cd41b77657268e3327dc3eb4d2255cd7529c
parentf61e759dcc2fb5ab3e9398a43468d44b7a9a6818 (diff)
downloadcython-2cf17f195c746ae0e9fd13840bec8d4a2f1afb23.tar.gz
Enable faulthandler around the test runs to get a notice on shard crashes.
-rwxr-xr-xruntests.py28
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)