From 262b5c3ca3d75d1333f4538fb5bf2f294814bcf1 Mon Sep 17 00:00:00 2001 From: Sampo Kuokkanen Date: Tue, 25 Aug 2026 20:11:22 +0900 Subject: [PATCH] Add specs for Fiber.current_scheduler after a Fiber terminates The existing examples all check what a Fiber sees while it is running, so nothing covered the root Fiber once a blocking Fiber has gone away. Cover normal completion, an exception propagating out of resume, and Fiber#kill. --- core/fiber/current_scheduler_spec.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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