mirror of
https://github.com/ruby/ruby.git
synced 2025-09-16 17:14:01 +02:00
merge revision(s) 44411: [Backport #9295]
* vm_insnhelper.c (argument_error): insert dummy frame to make a backtrace object intead of modify backtrace string array. [Bug #9295] * test/ruby/test_backtrace.rb: add a test for this patch. fix test to compare a result of Exception#backtrace with a result of Exception#backtrace_locations. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@44431 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5fd5088052
commit
ca050a8d57
4 changed files with 54 additions and 20 deletions
|
@ -19,17 +19,16 @@ class TestBacktrace < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_exception_backtrace_locations
|
||||
bt = Fiber.new{
|
||||
backtrace, backtrace_locations = Fiber.new{
|
||||
begin
|
||||
raise
|
||||
rescue => e
|
||||
e.backtrace_locations
|
||||
[e.backtrace, e.backtrace_locations]
|
||||
end
|
||||
}.resume
|
||||
assert_equal(1, bt.size)
|
||||
assert_match(/.+:\d+:.+/, bt[0].to_s)
|
||||
assert_equal(backtrace, backtrace_locations.map{|e| e.to_s})
|
||||
|
||||
bt = Fiber.new{
|
||||
backtrace, backtrace_locations = Fiber.new{
|
||||
begin
|
||||
begin
|
||||
helper_test_exception_backtrace_locations
|
||||
|
@ -37,11 +36,34 @@ class TestBacktrace < Test::Unit::TestCase
|
|||
raise
|
||||
end
|
||||
rescue => e
|
||||
e.backtrace_locations
|
||||
[e.backtrace, e.backtrace_locations]
|
||||
end
|
||||
}.resume
|
||||
assert_equal(2, bt.size)
|
||||
assert_match(/helper_test_exception_backtrace_locations/, bt[0].to_s)
|
||||
assert_equal(backtrace, backtrace_locations.map{|e| e.to_s})
|
||||
end
|
||||
|
||||
def call_helper_test_exception_backtrace_locations
|
||||
helper_test_exception_backtrace_locations(:bad_argument)
|
||||
end
|
||||
|
||||
def test_argument_error_backtrace_locations
|
||||
backtrace, backtrace_locations = Fiber.new{
|
||||
begin
|
||||
helper_test_exception_backtrace_locations(1)
|
||||
rescue ArgumentError => e
|
||||
[e.backtrace, e.backtrace_locations]
|
||||
end
|
||||
}.resume
|
||||
assert_equal(backtrace, backtrace_locations.map{|e| e.to_s})
|
||||
|
||||
backtrace, backtrace_locations = Fiber.new{
|
||||
begin
|
||||
call_helper_test_exception_backtrace_locations
|
||||
rescue ArgumentError => e
|
||||
[e.backtrace, e.backtrace_locations]
|
||||
end
|
||||
}.resume
|
||||
assert_equal(backtrace, backtrace_locations.map{|e| e.to_s})
|
||||
end
|
||||
|
||||
def test_caller_lev
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue