1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

fix a thread test.

* Use Queue for synchronization.
* Don't use `sleep 0.2` and use `th.join` because created thread
  can raise an exception after 0.2 seconds.
This commit is contained in:
Koichi Sasada 2019-12-22 06:28:13 +09:00
parent fa1bf8ab37
commit cf59e1476d

View file

@ -795,14 +795,15 @@ class TestThread < Test::Unit::TestCase
end
def test_handle_interrupt_blocking
r=:ng
e=Class.new(Exception)
r = nil
q = Queue.new
e = Class.new(Exception)
th_s = Thread.current
th = Thread.start{
th = Thread.start {
assert_raise(RuntimeError) {
Thread.handle_interrupt(Object => :on_blocking){
begin
Thread.pass until r == :wait
q.pop
Thread.current.raise RuntimeError, "will raise in sleep"
r = :ok
sleep
@ -812,9 +813,8 @@ class TestThread < Test::Unit::TestCase
}
}
}
assert_raise(e) {r = :wait; sleep 0.2}
th.join
assert_equal(:ok,r)
assert_raise(e) {q << true; th.join}
assert_equal(:ok, r)
end
def test_handle_interrupt_and_io