diff options
Diffstat (limited to 'test/thread')
-rw-r--r-- | test/thread/test_queue.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/thread/test_queue.rb b/test/thread/test_queue.rb index 30ce665ba3..563b91e748 100644 --- a/test/thread/test_queue.rb +++ b/test/thread/test_queue.rb @@ -1,6 +1,7 @@ require 'test/unit' require 'thread' require 'tmpdir' +require 'timeout' require_relative '../ruby/envutil' class TestQueue < Test::Unit::TestCase @@ -133,4 +134,25 @@ class TestQueue < Test::Unit::TestCase assert_same q, retval end + def test_queue_thread_raise + q = Queue.new + th1 = Thread.new do + begin + q.pop + rescue RuntimeError + sleep + end + end + th2 = Thread.new do + sleep 0.1 + q.pop + end + sleep 0.1 + th1.raise + sleep 0.1 + q << :s + assert_nothing_raised(TimeoutError) do + timeout(1) { th2.join } + end + end end |