aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--test/ruby/test_fiber.rb23
2 files changed, 28 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 4dfbc5d1ac..d2866a7fcb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,14 @@
+Wed Nov 9 19:00:44 2011 Koichi Sasada <ko1@atdot.net>
+
+ * test/ruby/test_fiber.rb: add tests for r33684 (Fiber#resume).
+
Wed Nov 9 16:40:49 2011 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (unixtime_to_filetime): should check the return value
of localtime(). reported by snowjail at gmail.com.
[ruby-dev:44838] [Bug #5596]
-Thu Nov 10 05:17:25 2011 Koichi Sasada <ko1@atdot.net>
+Thu Nov 9 13:17:25 2011 Koichi Sasada <ko1@atdot.net>
* cont.c (rb_fiber_m_transfer, rb_fiber_resume): prohibit using
"resume" after "transfer" method are used. You should not mix
diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb
index ed7ecc71ae..7cf4a6b119 100644
--- a/test/ruby/test_fiber.rb
+++ b/test/ruby/test_fiber.rb
@@ -220,5 +220,28 @@ class TestFiber < Test::Unit::TestCase
end
assert_equal("Can't call on top of Fiber or Thread", error.message, bug5083)
end
+
+ def test_prohibit_resume_transfered_fiber
+ assert_raise(FiberError){
+ root_fiber = Fiber.current
+ f = Fiber.new{
+ root_fiber.transfer
+ }
+ f.transfer
+ f.resume
+ }
+ assert_raise(FiberError){
+ g=nil
+ f=Fiber.new{
+ g.resume
+ g.resume
+ }
+ g=Fiber.new{
+ f.resume
+ f.resume
+ }
+ f.transfer
+ }
+ end
end