From 1c5c29e81fd5572df2ec6cdef655b1521fd4c97e Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Thu, 25 Feb 2021 18:36:15 +0100 Subject: Fix symabolize_name with non-string keys --- lib/psych/visitors/to_ruby.rb | 2 +- test/psych/test_psych.rb | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/psych/visitors/to_ruby.rb b/lib/psych/visitors/to_ruby.rb index 4d98850..4de7f80 100644 --- a/lib/psych/visitors/to_ruby.rb +++ b/lib/psych/visitors/to_ruby.rb @@ -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) diff --git a/test/psych/test_psych.rb b/test/psych/test_psych.rb index 30612de..c3c04d7 100644 --- a/test/psych/test_psych.rb +++ b/test/psych/test_psych.rb @@ -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 -- cgit v1.2.3