Bug #8886 » raise_exception_inside_raise_method.patch
| eval.c | ||
|---|---|---|
|
VALUE self = cfp->self;
|
||
|
ID mid = cfp->me->called_id;
|
||
|
th->cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
|
||
|
setup_exception(th, TAG_RAISE, mesg);
|
||
|
th->cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
|
||
|
EXEC_EVENT_HOOK(th, RUBY_EVENT_C_RETURN, self, mid, klass, Qnil);
|
||
|
rb_thread_raised_clear(th);
|
||
|
JUMP_TAG(TAG_RAISE);
|
||
| test/minitest/test_minitest_unit.rb | ||
|---|---|---|
|
1) Error:
|
||
|
#<Class:0xXXX>#test_error:
|
||
|
RuntimeError: unhandled exception
|
||
|
FILE:LINE:in \`raise\'
|
||
|
FILE:LINE:in \`test_error\'
|
||
|
2 tests, 1 assertions, 0 failures, 1 errors, 0 skips
|
||
| ... | ... | |
|
1) Error:
|
||
|
#<Class:0xXXX>#test_something:
|
||
|
RuntimeError: unhandled exception
|
||
|
FILE:LINE:in \`raise\'
|
||
|
FILE:LINE:in \`teardown\'
|
||
|
1 tests, 1 assertions, 0 failures, 1 errors, 0 skips
|
||
| ... | ... | |
|
Class: <SyntaxError>
|
||
|
Message: <\"icky\">
|
||
|
---Backtrace---
|
||
|
FILE:LINE:in \`raise\'
|
||
|
FILE:LINE:in \`test_assert_raises_triggered_different\'
|
||
|
---------------
|
||
|
EOM
|
||
| ... | ... | |
|
Class: <SyntaxError>
|
||
|
Message: <\"icky\">
|
||
|
---Backtrace---
|
||
|
FILE:LINE:in \`raise\'
|
||
|
FILE:LINE:in \`test_assert_raises_triggered_different_msg\'
|
||
|
---------------
|
||
|
EOM
|
||
| ... | ... | |
|
Class: <AnError>
|
||
|
Message: <\"AnError\">
|
||
|
---Backtrace---
|
||
|
FILE:LINE:in \`raise\'
|
||
|
FILE:LINE:in \`test_assert_raises_triggered_subclass\'
|
||
|
---------------
|
||
|
EOM
|
||
| test/ruby/test_backtrace.rb | ||
|---|---|---|
|
e.backtrace
|
||
|
end
|
||
|
}.resume
|
||
|
assert_equal(1, bt.size)
|
||
|
assert_equal(2, bt.size)
|
||
|
assert_match(/.+:\d+:.+/, bt[0])
|
||
|
end
|
||
| test/ruby/test_settracefunc.rb | ||
|---|---|---|
|
events.shift)
|
||
|
assert_equal(["c-return", 5, :backtrace, Exception],
|
||
|
events.shift)
|
||
|
assert_equal(["raise", 5, :test_raise, TestSetTraceFunc],
|
||
|
assert_equal(["raise", 5, :raise, Kernel],
|
||
|
events.shift)
|
||
|
assert_equal(["c-return", 5, :raise, Kernel],
|
||
|
events.shift)
|
||
| ... | ... | |
|
[:c_return,20, "xyzzy", Exception, :exception, RuntimeError, :outer, raised_exc],
|
||
|
[:c_call, 20, "xyzzy", Exception, :backtrace, raised_exc, :outer, :nothing],
|
||
|
[:c_return,20, "xyzzy", Exception, :backtrace, raised_exc, :outer, nil],
|
||
|
[:raise, 20, "xyzzy", TestSetTraceFunc, :trace_by_tracepoint, self, :outer, raised_exc],
|
||
|
[:raise, 20, "xyzzy", Kernel, :raise, self, :outer, raised_exc],
|
||
|
[:c_return,20, "xyzzy", Kernel, :raise, self, :outer, nil],
|
||
|
[:c_call, 20, "xyzzy", Module, :===, RuntimeError,:outer, :nothing],
|
||
|
[:c_return,20, "xyzzy", Module, :===, RuntimeError,:outer, true],
|
||
- « Previous
- 1
- 2
- Next »