summaryrefslogtreecommitdiff
path: root/test/thread
diff options
context:
space:
mode:
Diffstat (limited to 'test/thread')
-rw-r--r--test/thread/test_queue.rb22
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