From ce23a42661b1b8f28e31255534c55047a004ecab Mon Sep 17 00:00:00 2001 From: Andrew Hoos Date: Tue, 29 Nov 2016 07:01:48 -0800 Subject: Explicitely call sys.excepthook https://bitbucket.org/ned/coveragepy/issues/535/sysexcepthook-is-not-called --- coverage/execfile.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'coverage/execfile.py') diff --git a/coverage/execfile.py b/coverage/execfile.py index 3e20a527..39d17e9f 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -192,8 +192,7 @@ def run_python_file(filename, args, package=None, modulename=None, path0=None): # and a nested exception is shown to the user. This getattr fixes # it somehow? https://bitbucket.org/pypy/pypy/issue/1903 getattr(err, '__context__', None) - - raise ExceptionDuringRun(typ, err, tb.tb_next) + sys.excepthook(typ, err, tb.tb_next) finally: # Restore the old __main__, argv, and path. sys.modules['__main__'] = old_main_mod -- cgit v1.2.1 From 9379e9870e64e49cdbaf80df6b2d9c5e932048bd Mon Sep 17 00:00:00 2001 From: Andrew Hoos Date: Tue, 29 Nov 2016 08:07:05 -0800 Subject: Update handling of sys.excepthook to only call custom excepthooks and re-raise exceptions --- coverage/execfile.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'coverage/execfile.py') diff --git a/coverage/execfile.py b/coverage/execfile.py index 39d17e9f..8ff38776 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -192,7 +192,12 @@ def run_python_file(filename, args, package=None, modulename=None, path0=None): # and a nested exception is shown to the user. This getattr fixes # it somehow? https://bitbucket.org/pypy/pypy/issue/1903 getattr(err, '__context__', None) - sys.excepthook(typ, err, tb.tb_next) + + # call a custom user excepthook if it is provided + if sys.excepthook is not sys.__excepthook__: + sys.excepthook(typ, err, tb.tb_next) + raise ExceptionDuringRun(typ, err, tb.tb_next) + finally: # Restore the old __main__, argv, and path. sys.modules['__main__'] = old_main_mod -- cgit v1.2.1 From b5acf8c95b4c1060a9bc646dcb9cf52137c8df92 Mon Sep 17 00:00:00 2001 From: Andrew Hoos Date: Tue, 29 Nov 2016 17:52:50 -0800 Subject: Update code to better handle calling sys.excepthook when it throws --- coverage/execfile.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'coverage/execfile.py') diff --git a/coverage/execfile.py b/coverage/execfile.py index 8ff38776..d1aa2529 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -6,6 +6,7 @@ import marshal import os import sys +import traceback import types from coverage.backward import BUILTINS @@ -195,7 +196,13 @@ def run_python_file(filename, args, package=None, modulename=None, path0=None): # call a custom user excepthook if it is provided if sys.excepthook is not sys.__excepthook__: - sys.excepthook(typ, err, tb.tb_next) + try: + sys.excepthook(typ, err, tb.tb_next) + except SystemExit: + raise + except: + typ, err, tb = sys.exc_info() + traceback.print_exception(typ, err, tb.tb_next) raise ExceptionDuringRun(typ, err, tb.tb_next) finally: -- cgit v1.2.1 From 677eebd87677680128acad6445715356932f9ddc Mon Sep 17 00:00:00 2001 From: Andrew Hoos Date: Tue, 29 Nov 2016 17:56:47 -0800 Subject: Limit changes to only execfile.py --- coverage/execfile.py | 1 - 1 file changed, 1 deletion(-) (limited to 'coverage/execfile.py') diff --git a/coverage/execfile.py b/coverage/execfile.py index d1aa2529..fbb829f3 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -202,7 +202,6 @@ def run_python_file(filename, args, package=None, modulename=None, path0=None): raise except: typ, err, tb = sys.exc_info() - traceback.print_exception(typ, err, tb.tb_next) raise ExceptionDuringRun(typ, err, tb.tb_next) finally: -- cgit v1.2.1 From e3bbbfdc30432af2a58e6e8b3f503d213d77c60b Mon Sep 17 00:00:00 2001 From: Andrew Hoos Date: Tue, 29 Nov 2016 17:57:49 -0800 Subject: Remove the unused import --- coverage/execfile.py | 1 - 1 file changed, 1 deletion(-) (limited to 'coverage/execfile.py') diff --git a/coverage/execfile.py b/coverage/execfile.py index fbb829f3..4db737c5 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -6,7 +6,6 @@ import marshal import os import sys -import traceback import types from coverage.backward import BUILTINS -- cgit v1.2.1 From f807c4271e59a8016f15c8ba4763b0c2d92645a9 Mon Sep 17 00:00:00 2001 From: Andrew Hoos Date: Wed, 30 Nov 2016 15:07:51 -0800 Subject: Update change with tests and fixes for tests --- coverage/execfile.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'coverage/execfile.py') diff --git a/coverage/execfile.py b/coverage/execfile.py index 4db737c5..5633c59e 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -194,14 +194,15 @@ def run_python_file(filename, args, package=None, modulename=None, path0=None): getattr(err, '__context__', None) # call a custom user excepthook if it is provided - if sys.excepthook is not sys.__excepthook__: - 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) + 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. -- cgit v1.2.1