diff options
Diffstat (limited to 'test/fiber/test_queue.rb')
-rw-r--r-- | test/fiber/test_queue.rb | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/test/fiber/test_queue.rb b/test/fiber/test_queue.rb index 10d9540492..d78b026f11 100644 --- a/test/fiber/test_queue.rb +++ b/test/fiber/test_queue.rb @@ -5,9 +5,10 @@ require_relative 'scheduler' class TestFiberQueue < Test::Unit::TestCase def test_pop_with_timeout queue = Thread::Queue.new + kill = false result = :unspecified - Thread.new do + thread = Thread.new do scheduler = Scheduler.new Fiber.set_scheduler(scheduler) @@ -16,17 +17,23 @@ class TestFiberQueue < Test::Unit::TestCase end scheduler.run - end.join + end + until thread.join(2) + kill = true + thread.kill + end + assert_false(kill, 'Getting stuck due to a possible compiler bug.') assert_nil result end def test_pop_with_timeout_and_value queue = Thread::Queue.new queue.push(:something) + kill = false result = :unspecified - Thread.new do + thread = Thread.new do scheduler = Scheduler.new Fiber.set_scheduler(scheduler) @@ -35,8 +42,13 @@ class TestFiberQueue < Test::Unit::TestCase end scheduler.run - end.join + end + until thread.join(2) + kill = true + thread.kill + end + assert_false(kill, 'Getting stuck due to a possible compiler bug.') assert_equal :something, result end end |