diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/ruby/core/fiber/raise_spec.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/spec/ruby/core/fiber/raise_spec.rb b/spec/ruby/core/fiber/raise_spec.rb index fd1cc911b5..f56219e565 100644 --- a/spec/ruby/core/fiber/raise_spec.rb +++ b/spec/ruby/core/fiber/raise_spec.rb @@ -73,4 +73,29 @@ ruby_version_is "2.7" do -> { fiber.resume }.should raise_error(FiberError, /dead fiber called|attempt to resume a terminated fiber/) end end + +end + +ruby_version_is "2.7"..."3.0" do + describe "Fiber#raise" do + it "raises a FiberError if invoked on a transferring Fiber" do + require "fiber" + root = Fiber.current + fiber = Fiber.new { root.transfer } + fiber.transfer + -> { fiber.raise }.should raise_error(FiberError, "cannot resume transferred Fiber") + end + end +end + +ruby_version_is "3.0" do + describe "Fiber#raise" do + it "transfers and raises on a transferring fiber" do + require "fiber" + root = Fiber.current + fiber = Fiber.new { root.transfer } + fiber.transfer + -> { fiber.raise "msg" }.should raise_error(RuntimeError, "msg") + end + end end |