mirror of
https://github.com/ruby/ruby.git
synced 2025-09-16 00:54:01 +02:00
thread.c: set cause by Thread#raise
* thread.c (rb_threadptr_raise): set cause from the called thread, but not from the thread to be interrupted. [ruby-core:77222] [Bug #12741] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56125 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b5f3a113f5
commit
646c53895f
4 changed files with 66 additions and 0 deletions
|
@ -698,6 +698,52 @@ end.join
|
|||
assert_nil(e.cause.cause)
|
||||
end
|
||||
|
||||
def test_cause_thread_no_cause
|
||||
bug12741 = '[ruby-core:77222] [Bug #12741]'
|
||||
|
||||
x = Thread.current
|
||||
a = false
|
||||
y = Thread.start do
|
||||
Thread.pass until a
|
||||
x.raise "stop"
|
||||
end
|
||||
|
||||
begin
|
||||
raise bug12741
|
||||
rescue
|
||||
e = assert_raise_with_message(RuntimeError, "stop") do
|
||||
a = true
|
||||
sleep 1
|
||||
end
|
||||
end
|
||||
assert_nil(e.cause)
|
||||
end
|
||||
|
||||
def test_cause_thread_with_cause
|
||||
bug12741 = '[ruby-core:77222] [Bug #12741]'
|
||||
|
||||
x = Thread.current
|
||||
a = false
|
||||
y = Thread.start do
|
||||
Thread.pass until a
|
||||
begin
|
||||
raise "caller's cause"
|
||||
rescue
|
||||
x.raise "stop"
|
||||
end
|
||||
end
|
||||
|
||||
begin
|
||||
raise bug12741
|
||||
rescue
|
||||
e = assert_raise_with_message(RuntimeError, "stop") do
|
||||
a = true
|
||||
sleep 1
|
||||
end
|
||||
end
|
||||
assert_equal("caller's cause", e.cause.message)
|
||||
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