summaryrefslogtreecommitdiff
path: root/coverage/execfile.py
diff options
context:
space:
mode:
Diffstat (limited to 'coverage/execfile.py')
-rw-r--r--coverage/execfile.py12
1 files changed, 11 insertions, 1 deletions
diff --git a/coverage/execfile.py b/coverage/execfile.py
index 58b05402..f598c60b 100644
--- a/coverage/execfile.py
+++ b/coverage/execfile.py
@@ -199,7 +199,17 @@ def run_python_file(filename, args, package=None, modulename=None, path0=None):
# it somehow? https://bitbucket.org/pypy/pypy/issue/1903
getattr(err, '__context__', None)
- raise ExceptionDuringRun(typ, err, tb.tb_next)
+ # call a custom user excepthook if it is provided
+ try:
+ sys.excepthook(typ, err, tb.tb_next)
+ except SystemExit:
+ raise
+ except:
+ typ, err, tb = sys.exc_info()
+ raise ExceptionDuringRun(typ, err, tb.tb_next)
+ else:
+ sys.exit(1)
+
finally:
# Restore the old __main__, argv, and path.
sys.modules['__main__'] = old_main_mod