From 6d8d3b89fbcb22ca064a9d24f31f9a0b37e1826d Mon Sep 17 00:00:00 2001 From: William Deegan Date: Wed, 19 Apr 2017 09:02:36 -0700 Subject: py2/3 fix logic for reraising exceptions. A taskmaster test was failing because the passed exception value wasn't an exception and thus couldn't be reraised as is. Added logic to create an exception with the value and raise that --- src/engine/SCons/Taskmaster.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py index cf924e7..9bd9597 100644 --- a/src/engine/SCons/Taskmaster.py +++ b/src/engine/SCons/Taskmaster.py @@ -546,7 +546,13 @@ class Task(object): if sys.version_info[0] == 2: exec("raise exc_type, exc_value, exc_traceback") else: # sys.version_info[0] == 3: - exec("raise exc_value.with_traceback(exc_traceback)") + if isinstance(exc_value, Exception): #hasattr(exc_value, 'with_traceback'): + # If exc_value is an exception, then just reraise + exec("raise exc_value.with_traceback(exc_traceback)") + else: + # else we'll create an exception using the value and raise that + exec("raise exc_type(exc_value).with_traceback(exc_traceback)") + # raise e.__class__, e.__class__(e), sys.exc_info()[2] # exec("raise exc_type(exc_value).with_traceback(exc_traceback)") -- cgit v0.12