diff options
author | nicholas a. evans <nicholas.evans@gmail.com> | 2020-11-17 19:23:51 -0500 |
---|---|---|
committer | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2020-12-12 10:18:19 +1300 |
commit | 31e8de2920935d500105949bda931f3ca22cdbff (patch) | |
tree | c2ec39c48a2930ecbbb4ed58175cf3d587270165 /test/ruby/test_fiber.rb | |
parent | e795b632467317cdea07d0599bf2c5d08b403f00 (diff) |
Let Fiber#raise work with transferring fibers
This automatically choosess whether to use transfer on a transferring
fiber or resume on a yielding fiber. If the fiber is resuming, it
raises a FiberError.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3795
Diffstat (limited to 'test/ruby/test_fiber.rb')
-rw-r--r-- | test/ruby/test_fiber.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb index 96ffc79950..e0cc59bd3c 100644 --- a/test/ruby/test_fiber.rb +++ b/test/ruby/test_fiber.rb @@ -169,6 +169,16 @@ class TestFiber < Test::Unit::TestCase assert_equal(:ok, fib.raise) end + def test_raise_transferring_fiber + root = Fiber.current + fib = Fiber.new { root.transfer } + fib.transfer + assert_raise(RuntimeError){ + fib.raise "can raise with transfer: true" + } + assert_not_predicate(fib, :alive?) + end + def test_transfer ary = [] f2 = nil |