-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* lib/yaml/store.rb (YAML::load): modified to support empty
database. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
- Loading branch information
matz
committed
Apr 11, 2008
1 parent
4a407ec
commit 3f03878
Showing
4 changed files
with
103 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,8 @@ | ||
Fri Apr 11 16:42:33 2008 Yukihiro Matsumoto <[email protected]> | ||
|
||
* lib/yaml/store.rb (YAML::load): modified to support empty | ||
database. | ||
|
||
Fri Apr 11 08:05:12 2008 Yukihiro Matsumoto <[email protected]> | ||
|
||
* marshal.c (w_object): add volatile to avoid potential GC bug. a | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
require 'test/unit' | ||
require 'yaml/store' | ||
|
||
class YAMLStoreTest < Test::Unit::TestCase | ||
def setup | ||
@yamlstore_file = "yamlstore.tmp.#{Process.pid}" | ||
@yamlstore = YAML::Store.new(@yamlstore_file) | ||
end | ||
|
||
def teardown | ||
File.unlink(@yamlstore_file) rescue nil | ||
end | ||
|
||
def test_opening_new_file_in_readonly_mode_should_result_in_empty_values | ||
@yamlstore.transaction(true) do | ||
assert_nil @yamlstore[:foo] | ||
assert_nil @yamlstore[:bar] | ||
end | ||
end | ||
|
||
def test_opening_new_file_in_readwrite_mode_should_result_in_empty_values | ||
@yamlstore.transaction do | ||
assert_nil @yamlstore[:foo] | ||
assert_nil @yamlstore[:bar] | ||
end | ||
end | ||
|
||
def test_data_should_be_loaded_correctly_when_in_readonly_mode | ||
@yamlstore.transaction do | ||
@yamlstore[:foo] = "bar" | ||
end | ||
@yamlstore.transaction(true) do | ||
assert_equal "bar", @yamlstore[:foo] | ||
end | ||
end | ||
|
||
def test_data_should_be_loaded_correctly_when_in_readwrite_mode | ||
@yamlstore.transaction do | ||
@yamlstore[:foo] = "bar" | ||
end | ||
@yamlstore.transaction do | ||
assert_equal "bar", @yamlstore[:foo] | ||
end | ||
end | ||
|
||
def test_changes_after_commit_are_discarded | ||
@yamlstore.transaction do | ||
@yamlstore[:foo] = "bar" | ||
@yamlstore.commit | ||
@yamlstore[:foo] = "baz" | ||
end | ||
@yamlstore.transaction(true) do | ||
assert_equal "bar", @yamlstore[:foo] | ||
end | ||
end | ||
|
||
def test_changes_are_not_written_on_abort | ||
@yamlstore.transaction do | ||
@yamlstore[:foo] = "bar" | ||
@yamlstore.abort | ||
end | ||
@yamlstore.transaction(true) do | ||
assert_nil @yamlstore[:foo] | ||
end | ||
end | ||
|
||
def test_writing_inside_readonly_transaction_raises_error | ||
assert_raise(PStore::Error) do | ||
@yamlstore.transaction(true) do | ||
@yamlstore[:foo] = "bar" | ||
end | ||
end | ||
end | ||
end |