diff options
| author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-09-28 19:04:45 +0000 |
|---|---|---|
| committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-09-28 19:04:45 +0000 |
| commit | edb751ca4d2b7513fa1bdd4df067fd59c98680a2 (patch) | |
| tree | 847cd2a9901e73ccb88f801c813842d857626af2 /test | |
| parent | f43ee44a4d6c56f538bb8c34f1138fb487b26e43 (diff) | |
| download | ruby-edb751ca4d2b7513fa1bdd4df067fd59c98680a2.tar.gz ruby-edb751ca4d2b7513fa1bdd4df067fd59c98680a2.tar.xz ruby-edb751ca4d2b7513fa1bdd4df067fd59c98680a2.zip | |
* cont.c: Thread local storage should be fiber local.
* bootstraptest/test_knownbug.rb, test/ruby/test_fiber.rb:
move a fixed test.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@13555 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
| -rw-r--r-- | test/ruby/test_fiber.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb index 2756e6b21..fc9a49919 100644 --- a/test/ruby/test_fiber.rb +++ b/test/ruby/test_fiber.rb @@ -131,5 +131,34 @@ class TestFiber < Test::Unit::TestCase assert_equal(:ok, f1.transfer) assert_equal([:baz], ary) end + + def test_tls + # + def tvar(var, val) + old = Thread.current[var] + begin + Thread.current[var] = val + yield + ensure + Thread.current[var] = old + end + end + + fb = Fiber.new { + assert_equal(nil, Thread.current[:v]); tvar(:v, :x) { + assert_equal(:x, Thread.current[:v]); Fiber.yield + assert_equal(:x, Thread.current[:v]); } + assert_equal(nil, Thread.current[:v]); Fiber.yield + raise # unreachable + } + + assert_equal(nil, Thread.current[:v]); tvar(:v,1) { + assert_equal(1, Thread.current[:v]); tvar(:v,3) { + assert_equal(3, Thread.current[:v]); fb.resume + assert_equal(3, Thread.current[:v]); } + assert_equal(1, Thread.current[:v]); } + assert_equal(nil, Thread.current[:v]); fb.resume + assert_equal(nil, Thread.current[:v]); + end end |
