1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/psych] Don't hardcode expected alias names

b9ab19094f
This commit is contained in:
Alexander Momchilov 2022-07-27 10:19:37 -04:00 committed by git
parent 0b7cfdca09
commit 71f89c2874
3 changed files with 28 additions and 22 deletions

View file

@ -57,17 +57,20 @@ module Psych
assert_cycle(@list) assert_cycle(@list)
end end
def test_recursive_array
@list << @list
loaded = Psych.load(Psych.dump(@list), aliases: true)
assert_same loaded, loaded.last
end
def test_recursive_array_uses_alias def test_recursive_array_uses_alias
@list << @list @list << @list
expected = <<~eoyaml assert_raise(BadAlias) do
--- &1 Psych.load(Psych.dump(@list), aliases: false)
- :a: b end
- foo
- *1
eoyaml
assert_equal expected, Psych.dump(@list)
end end
def test_cycle def test_cycle

View file

@ -112,16 +112,22 @@ eoyml
assert_equal({"foo"=>{"hello"=>"world"}, "bar"=>{"hello"=>"world"}}, hash) assert_equal({"foo"=>{"hello"=>"world"}, "bar"=>{"hello"=>"world"}}, hash)
end end
def test_recursive_hash
h = { }
h["recursive_reference"] = h
loaded = Psych.load(Psych.dump(h), aliases: true)
assert_same loaded, loaded.fetch("recursive_reference")
end
def test_recursive_hash_uses_alias def test_recursive_hash_uses_alias
h = { } h = { }
h["recursive_reference"] = h h["recursive_reference"] = h
expected = <<~eoyaml assert_raise(BadAlias) do
--- &1 Psych.load(Psych.dump(h), aliases: false)
recursive_reference: *1 end
eoyaml
assert_equal(expected, Psych.dump(h))
end end
def test_key_deduplication def test_key_deduplication

View file

@ -36,22 +36,19 @@ module Psych
def test_cyclic_references def test_cyclic_references
foo = Foo.new(nil) foo = Foo.new(nil)
foo.parent = foo foo.parent = foo
loaded = Psych.unsafe_load Psych.dump foo loaded = Psych.load(Psych.dump(foo), permitted_classes: [Foo], aliases: true)
assert_instance_of(Foo, loaded) assert_instance_of(Foo, loaded)
assert_equal loaded, loaded.parent assert_same loaded, loaded.parent
end end
def test_cyclic_reference_uses_alias def test_cyclic_reference_uses_alias
foo = Foo.new(nil) foo = Foo.new(nil)
foo.parent = foo foo.parent = foo
expected = <<~eoyaml assert_raise(BadAlias) do
--- &1 !ruby/object:Psych::Foo Psych.load(Psych.dump(foo), permitted_classes: [Foo], aliases: false)
parent: *1 end
eoyaml
assert_equal expected, Psych.dump(foo)
end end
end end
end end