diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-05-28 23:32:10 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-05-28 23:32:10 +0000 |
commit | 394c7da441c369dc6b73842425be4e5df38dd5e0 (patch) | |
tree | b7e4fe786ac4c77cb3fe3b02bb0bb81083319cc4 /test/test_pstore.rb | |
parent | fee12c7fa50b623a322bd1fe24e9d6aababd08a1 (diff) |
merges r31050 from trunk into ruby_1_9_2.
--
* lib/pstore.rb: Delete variable @transaction and fix #4474. Patch by
Masaki Matsushita (Glass_saga).
* test/test_pstore.rb(test_thread_safe): Add test for #4474.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@31773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/test_pstore.rb')
-rw-r--r-- | test/test_pstore.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/test_pstore.rb b/test/test_pstore.rb index e10ce906cb..32d79ea2ba 100644 --- a/test/test_pstore.rb +++ b/test/test_pstore.rb @@ -71,4 +71,33 @@ class PStoreTest < Test::Unit::TestCase end end end + + def test_thread_safe + assert_raise(PStore::Error) do + flag = false + Thread.new do + @pstore.transaction do + @pstore[:foo] = "bar" + flag = true + sleep 1 + end + end + until flag; end + @pstore.transaction {} + end + assert_block do + pstore = PStore.new("pstore.tmp2.#{Process.pid}",true) + flag = false + Thread.new do + pstore.transaction do + pstore[:foo] = "bar" + flag = true + sleep 1 + end + end + until flag; end + pstore.transaction { pstore[:foo] == "bar" } + File.unlink("pstore.tmp2.#{Process.pid}") rescue nil + end + end end |