summaryrefslogtreecommitdiff
path: root/test/ruby/test_thread.rb
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2019-12-22 06:28:13 +0900
committerKoichi Sasada <ko1@atdot.net>2019-12-22 06:29:52 +0900
commitcf59e1476d01be27dc88cbee5f6c6cf87f007043 (patch)
tree05b26cd9edb616daf410e1e2fddaa35e26168e6e /test/ruby/test_thread.rb
parentfa1bf8ab37caad5fa0679adc0ecb8f6f5cec2eea (diff)
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.
Diffstat (limited to 'test/ruby/test_thread.rb')
-rw-r--r--test/ruby/test_thread.rb14
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