[ruby/psych] Fix symabolize_name with non-string keys

https://github.com/ruby/psych/commit/1c5c29e81f
This commit is contained in:
Jean Boussier 2021-02-25 18:36:15 +01:00 коммит произвёл Hiroshi SHIBATA
Родитель 830778db95
Коммит a3ceed50b8
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: F9CF13417264FAC2
2 изменённых файлов: 5 добавлений и 4 удалений

Просмотреть файл

@ -366,7 +366,7 @@ module Psych
hash[key] = val
end
else
if !tagged && @symbolize_names
if !tagged && @symbolize_names && key.is_a?(String)
key = key.to_sym
elsif !@freeze
key = deduplicate(key)

Просмотреть файл

@ -371,17 +371,18 @@ class TestPsych < Psych::TestCase
yaml = <<-eoyml
foo:
bar: baz
1: 2
hoge:
- fuga: piyo
eoyml
result = Psych.load(yaml)
assert_equal result, { "foo" => { "bar" => "baz"}, "hoge" => [{ "fuga" => "piyo" }] }
assert_equal result, { "foo" => { "bar" => "baz", 1 => 2 }, "hoge" => [{ "fuga" => "piyo" }] }
result = Psych.load(yaml, symbolize_names: true)
assert_equal result, { foo: { bar: "baz" }, hoge: [{ fuga: "piyo" }] }
assert_equal result, { foo: { bar: "baz", 1 => 2 }, hoge: [{ fuga: "piyo" }] }
result = Psych.safe_load(yaml, symbolize_names: true)
assert_equal result, { foo: { bar: "baz" }, hoge: [{ fuga: "piyo" }] }
assert_equal result, { foo: { bar: "baz", 1 => 2 }, hoge: [{ fuga: "piyo" }] }
end
end