diff --git a/core/fiber/current_scheduler_spec.rb b/core/fiber/current_scheduler_spec.rb index fc73c8e6a..25f6ddeb1 100644 --- a/core/fiber/current_scheduler_spec.rb +++ b/core/fiber/current_scheduler_spec.rb @@ -63,5 +63,23 @@ end.resume seen.should.equal?(@scheduler) end + + it "returns nil on the root Fiber after a blocking Fiber has finished" do + Fiber.new(blocking: true) { }.resume + Fiber.current_scheduler.should == nil + end + + it "returns nil on the root Fiber after a blocking Fiber has raised" do + fiber = Fiber.new(blocking: true) { raise "from the fiber" } + -> { fiber.resume }.should.raise(RuntimeError) + Fiber.current_scheduler.should == nil + end + + it "returns nil on the root Fiber after a blocking Fiber has been killed" do + fiber = Fiber.new(blocking: true) { Fiber.yield } + fiber.resume + fiber.kill + Fiber.current_scheduler.should == nil + end end end