summaryrefslogtreecommitdiff
path: root/coverage/execfile.py
diff options
context:
space:
mode:
authorNed Batchelder <nedbat@gmail.com>2016-12-26 07:14:26 -0500
committerNed Batchelder <nedbat@gmail.com>2016-12-26 07:14:26 -0500
commit680d6642f1b05a3011be30b490ff6fa0c6875f09 (patch)
treec376904658a5164b43295d715e9dddd387754568 /coverage/execfile.py
parentc66a529060492ceb587288ccfe5483dd172e55ff (diff)
parent8ccdedf3ec46cb51130af886be36b85b9e3015b7 (diff)
downloadpython-coveragepy-680d6642f1b05a3011be30b490ff6fa0c6875f09.tar.gz
Merged in andrewhoos/coverage.py (pull request #93)
Explicitely call sys.excepthook
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 58b0540..f598c60 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