summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--eval.c4
-rw-r--r--test/minitest/test_minitest_unit.rb5
-rw-r--r--test/ruby/test_backtrace.rb2
-rw-r--r--test/ruby/test_settracefunc.rb4
5 files changed, 21 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index eb47794185..b20cc172e2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/eval.c b/eval.c
index 873d549739..7e64baa938 100644
--- a/eval.c
+++ b/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);
diff --git a/test/minitest/test_minitest_unit.rb b/test/minitest/test_minitest_unit.rb
index 0f29614e87..f8c7028bce 100644
--- a/test/minitest/test_minitest_unit.rb
+++ b/test/minitest/test_minitest_unit.rb
@@ -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
diff --git a/test/ruby/test_backtrace.rb b/test/ruby/test_backtrace.rb
index 91dec4a943..e1491e9c63 100644
--- a/test/ruby/test_backtrace.rb
+++ b/test/ruby/test_backtrace.rb
@@ -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
diff --git a/test/ruby/test_settracefunc.rb b/test/ruby/test_settracefunc.rb
index 1de7b901b0..42f1589a18 100644
--- a/test/ruby/test_settracefunc.rb
+++ b/test/ruby/test_settracefunc.rb
@@ -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],