summaryrefslogtreecommitdiff
path: root/test/ruby/test_fiber.rb
diff options
context:
space:
mode:
authornicholas a. evans <nicholas.evans@gmail.com>2020-11-17 19:23:51 -0500
committerSamuel Williams <samuel.williams@oriontransfer.co.nz>2020-12-12 10:18:19 +1300
commit31e8de2920935d500105949bda931f3ca22cdbff (patch)
treec2ec39c48a2930ecbbb4ed58175cf3d587270165 /test/ruby/test_fiber.rb
parente795b632467317cdea07d0599bf2c5d08b403f00 (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.rb10
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