* eval.c (rb_raise_jump): pop frame after setup exception.

Patches by deivid (David Rodriguez). [Bug #8886]
* test/minitest/test_minitest_unit.rb: catch up this change.
* test/ruby/test_backtrace.rb: ditto.
* test/ruby/test_settracefunc.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2013-12-11 03:39:52 +00:00
Родитель 3d4ceaaa14
Коммит a4cbd6412a
5 изменённых файлов: 21 добавлений и 5 удалений

Просмотреть файл

@ -1,3 +1,14 @@
Wed Dec 11 12:38:17 2013 Koichi Sasada <ko1@atdot.net>
* eval.c (rb_raise_jump): pop frame after setup exception.
Patches by deivid (David Rodriguez). [Bug #8886]
* test/minitest/test_minitest_unit.rb: catch up this change.
* test/ruby/test_backtrace.rb: ditto.
* test/ruby/test_settracefunc.rb: ditto.
Wed Dec 11 04:54:03 2013 Eric Hodel <drbrain@segment7.net>
* lib/rubygems: Update to RubyGems master ec8ed22. Notable changes

4
eval.c
Просмотреть файл

@ -688,10 +688,10 @@ rb_raise_jump(VALUE mesg)
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);

Просмотреть файл

@ -296,6 +296,7 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
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
@ -323,6 +324,7 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
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
@ -1210,6 +1212,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
Class: <SyntaxError>
Message: <\"icky\">
---Backtrace---
FILE:LINE:in \`raise\'
FILE:LINE:in \`test_assert_raises_triggered_different\'
---------------
EOM
@ -1233,6 +1236,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
Class: <SyntaxError>
Message: <\"icky\">
---Backtrace---
FILE:LINE:in \`raise\'
FILE:LINE:in \`test_assert_raises_triggered_different_msg\'
---------------
EOM
@ -1279,6 +1283,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
Class: <AnError>
Message: <\"AnError\">
---Backtrace---
FILE:LINE:in \`raise\'
FILE:LINE:in \`test_assert_raises_triggered_subclass\'
---------------
EOM

Просмотреть файл

@ -10,7 +10,7 @@ class TestBacktrace < Test::Unit::TestCase
e.backtrace
end
}.resume
assert_equal(1, bt.size)
assert_equal(2, bt.size)
assert_match(/.+:\d+:.+/, bt[0])
end

Просмотреть файл

@ -257,7 +257,7 @@ class TestSetTraceFunc < Test::Unit::TestCase
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)
@ -517,7 +517,7 @@ class TestSetTraceFunc < Test::Unit::TestCase
[: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],