diff options
author | tenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-05 17:11:21 +0000 |
---|---|---|
committer | tenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-04-05 17:11:21 +0000 |
commit | 7a7bb6446410c239c7f92bd8e94f235f349206ea (patch) | |
tree | d6e504bb55d03eb8b43caf8c51cc90456b508840 /test | |
parent | fbb29bc08c76c00b963e5587e8e9e4b7c580ea95 (diff) | |
download | ruby-7a7bb6446410c239c7f92bd8e94f235f349206ea.tar.gz |
* ext/psych/lib/psych/visitors/to_ruby.rb: correctly register
self-referential strings. Fixes tenderlove/psych #135
* test/psych/test_string.rb: appropriate test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40137 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/psych/test_string.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/psych/test_string.rb b/test/psych/test_string.rb index a2988316f0..0bdba184f3 100644 --- a/test/psych/test_string.rb +++ b/test/psych/test_string.rb @@ -15,6 +15,31 @@ module Psych end end + def test_string_subclass_with_anchor + y = Psych.load <<-eoyml +--- +body: + string: &70121654388580 !ruby/string + str: ! 'foo' + x: + body: *70121654388580 + eoyml + assert_equal({"body"=>{"string"=>"foo", "x"=>{"body"=>"foo"}}}, y) + end + + def test_self_referential_string + y = Psych.load <<-eoyml +--- +string: &70121654388580 !ruby/string + str: ! 'foo' + body: *70121654388580 + eoyml + + assert_equal({"string"=>"foo"}, y) + value = y['string'] + assert_equal value, value.instance_variable_get(:@body) + end + def test_another_subclass_with_attributes y = Psych.load Psych.dump Y.new("foo").tap {|y| y.val = 1} assert_equal "foo", y |