diff options
Diffstat (limited to 'test/fiber/test_sleep.rb')
-rw-r--r-- | test/fiber/test_sleep.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/fiber/test_sleep.rb b/test/fiber/test_sleep.rb index e882766345..a7e88c0367 100644 --- a/test/fiber/test_sleep.rb +++ b/test/fiber/test_sleep.rb @@ -43,4 +43,29 @@ class TestFiberSleep < Test::Unit::TestCase assert_operator seconds, :>=, 2, "actual: %p" % seconds end + + def test_broken_sleep + thread = Thread.new do + Thread.current.report_on_exception = false + + scheduler = Scheduler.new + + def scheduler.kernel_sleep(duration = nil) + raise "Broken sleep!" + end + + Fiber.set_scheduler scheduler + + Fiber.schedule do + sleep 0 + end + + ensure + scheduler.close + end + + assert_raise(RuntimeError) do + thread.join + end + end end |