diff options
author | Koichi Sasada <ko1@atdot.net> | 2019-12-22 06:28:13 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2019-12-22 06:29:52 +0900 |
commit | cf59e1476d01be27dc88cbee5f6c6cf87f007043 (patch) | |
tree | 05b26cd9edb616daf410e1e2fddaa35e26168e6e | |
parent | fa1bf8ab37caad5fa0679adc0ecb8f6f5cec2eea (diff) | |
download | ruby-cf59e1476d01be27dc88cbee5f6c6cf87f007043.tar.gz |
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.
-rw-r--r-- | test/ruby/test_thread.rb | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb index bf61a28f4d..f8127d8786 100644 --- a/test/ruby/test_thread.rb +++ b/test/ruby/test_thread.rb @@ -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 |