mirror of
https://github.com/ruby/ruby.git
synced 2025-09-16 09:04:05 +02:00
not overwrite cause
* eval.c (setup_exception): set the cause only if it is explicitly given or not set yet. [Bug #12068] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53819 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
f061d40326
commit
e294f4cfdf
3 changed files with 72 additions and 6 deletions
|
@ -625,6 +625,44 @@ end.join
|
|||
assert_not_same(e, e.cause, "#{msg}: should not be recursive")
|
||||
end
|
||||
|
||||
def test_cause_raised_in_rescue
|
||||
e = assert_raise_with_message(RuntimeError, 'b') {
|
||||
begin
|
||||
raise 'a'
|
||||
rescue => a
|
||||
begin
|
||||
raise 'b'
|
||||
rescue => b
|
||||
begin
|
||||
raise 'c'
|
||||
rescue
|
||||
raise b
|
||||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
assert_equal('a', e.cause.message, 'cause should not be overwritten by reraise')
|
||||
end
|
||||
|
||||
def test_cause_at_raised
|
||||
e = assert_raise_with_message(RuntimeError, 'b') {
|
||||
begin
|
||||
raise 'a'
|
||||
rescue => a
|
||||
b = RuntimeError.new('b')
|
||||
begin
|
||||
raise 'c'
|
||||
rescue
|
||||
raise b
|
||||
end
|
||||
end
|
||||
}
|
||||
assert_equal('c', e.cause.message, 'cause should be the exception at raised')
|
||||
end
|
||||
|
||||
def test_cause_at_raised
|
||||
end
|
||||
|
||||
def test_raise_with_cause
|
||||
msg = "[Feature #8257]"
|
||||
cause = ArgumentError.new("foobar")
|
||||
|
@ -639,6 +677,25 @@ end.join
|
|||
end
|
||||
end
|
||||
|
||||
def test_raise_with_cause_in_rescue
|
||||
e = assert_raise_with_message(RuntimeError, 'b') {
|
||||
begin
|
||||
raise 'a'
|
||||
rescue => a
|
||||
begin
|
||||
raise 'b'
|
||||
rescue => b
|
||||
begin
|
||||
raise 'c'
|
||||
rescue
|
||||
raise b, cause: ArgumentError.new('d')
|
||||
end
|
||||
end
|
||||
end
|
||||
}
|
||||
assert_equal('d', e.cause.message, 'cause option should be honored always')
|
||||
end
|
||||
|
||||
def test_unknown_option
|
||||
bug = '[ruby-core:63203] [Feature #8257] should pass unknown options'
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue