diff options
author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2021-09-20 14:19:52 +1200 |
---|---|---|
committer | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2021-09-20 18:30:51 +1200 |
commit | 649c87bd86d08bee8cd61584e6ece34e15e6814d (patch) | |
tree | 1bcb5d6acba21e11c6510b22e3dc87eb774e2244 /spec/ruby/optional/capi/fiber_spec.rb | |
parent | 88ba5fe547cae2370eccbe230754f59e1d5cbaf3 (diff) | |
download | ruby-649c87bd86d08bee8cd61584e6ece34e15e6814d.tar.gz |
Add C interface spec.
Diffstat (limited to 'spec/ruby/optional/capi/fiber_spec.rb')
-rw-r--r-- | spec/ruby/optional/capi/fiber_spec.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/spec/ruby/optional/capi/fiber_spec.rb b/spec/ruby/optional/capi/fiber_spec.rb index 196ddc45fb..92bac22d1a 100644 --- a/spec/ruby/optional/capi/fiber_spec.rb +++ b/spec/ruby/optional/capi/fiber_spec.rb @@ -48,4 +48,42 @@ describe "C-API Fiber function" do fiber.resume(42).should == "42" end end + + describe "rb_fiber_raise" do + ruby_version_is '3.1' do + it "raises an exception on the resumed fiber" do + fiber = Fiber.new do + begin + Fiber.yield + rescue => error + error + end + end + + fiber.resume + + result = @s.rb_fiber_raise(fiber, "Boom!") + result.should be_an_instance_of(RuntimeError) + result.message.should == "Boom!" + end + + it "raises an exception on the transferred fiber" do + main = Fiber.current + + fiber = Fiber.new do + begin + main.transfer + rescue => error + error + end + end + + fiber.transfer + + result = @s.rb_fiber_raise(fiber, "Boom!") + result.should be_an_instance_of(RuntimeError) + result.message.should == "Boom!" + end + end + end end |