提交 13807719 authored 作者: Frederic's avatar Frederic

Fix tests crash in DebugMode recently introduced.

Now we keep the original error message type and just add more information to it.
上级 6405a561
...@@ -192,10 +192,6 @@ class BadThunkOutput(DebugModeError): ...@@ -192,10 +192,6 @@ class BadThunkOutput(DebugModeError):
return ret return ret
class OptimizationInsertError(DebugModeError):
pass
class BadOptimization(DebugModeError): class BadOptimization(DebugModeError):
"""Exception: some variable and its substitute take different """Exception: some variable and its substitute take different
runtime values. runtime values.
...@@ -1803,14 +1799,16 @@ class _Linker(gof.link.LocalLinker): ...@@ -1803,14 +1799,16 @@ class _Linker(gof.link.LocalLinker):
# But this make the output uglier. # But this make the output uglier.
reason = fgraph.equivalence_tracker.reasons[ reason = fgraph.equivalence_tracker.reasons[
node.outputs[0]] node.outputs[0]]
if not reason:
raise
opt = str(reason[0][0]) opt = str(reason[0][0])
msg = ( msg = (
"An optimization (probably %s ) inserted an apply node that raise an error." % opt + "An optimization (probably %s ) inserted an apply node that raise an error." % opt +
"The information we have about this optimizations is:" + str(reason) + "\nThe information we have about this optimizations is:" + str(reason[0][1]) +
"The original exception: " + str(e)) "\n" + reason[0][2] +
new_e = OptimizationInsertError(msg) "\n\nThe original exception: \n" + str(e))
new_e = e.__class__(msg)
exc_type, exc_value, exc_trace = sys.exc_info() exc_type, exc_value, exc_trace = sys.exc_info()
exc_type = OptimizationInsertError
exc_value = new_e exc_value = new_e
raise_with_op(node, thunk_c, raise_with_op(node, thunk_c,
(exc_type, exc_value, exc_trace)) (exc_type, exc_value, exc_trace))
...@@ -1899,14 +1897,16 @@ class _Linker(gof.link.LocalLinker): ...@@ -1899,14 +1897,16 @@ class _Linker(gof.link.LocalLinker):
# But this make the output uglier. # But this make the output uglier.
reason = fgraph.equivalence_tracker.reasons[ reason = fgraph.equivalence_tracker.reasons[
node.outputs[0]] node.outputs[0]]
if not reason:
raise
opt = str(reason[0][0]) opt = str(reason[0][0])
msg = ( msg = (
"An optimization (probably %s ) inserted an apply node that raise an error." % opt + "An optimization (probably %s ) inserted an apply node that raise an error." % opt +
"The information we have about this optimizations is:" + str(reason) + "\nThe information we have about this optimizations is:" + str(reason[0][1]) +
"The original exception: " + str(e)) "\n" + reason[0][2] +
new_e = OptimizationInsertError(msg) "\n\nThe original exception: \n" + str(e))
new_e = e.__class__(msg)
exc_type, exc_value, exc_trace = sys.exc_info() exc_type, exc_value, exc_trace = sys.exc_info()
exc_type = OptimizationInsertError
exc_value = new_e exc_value = new_e
raise_with_op(node, thunk_c, raise_with_op(node, thunk_c,
(exc_type, exc_value, exc_trace)) (exc_type, exc_value, exc_trace))
......
...@@ -274,7 +274,7 @@ def test_badoptimization_opt_err(): ...@@ -274,7 +274,7 @@ def test_badoptimization_opt_err():
try: try:
f([1.0, 2.0, 3.0], [2, 3, 4],) f([1.0, 2.0, 3.0], [2, 3, 4],)
except debugmode.OptimizationInsertError, e: except Exception, e:
assert 'insert_bigger_b_add' in e.message assert 'insert_bigger_b_add' in e.message
return # TEST PASS return # TEST PASS
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论