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