diff options
Diffstat (limited to 'dev-ruby/safe_yaml/files/safe_yaml-1.0.5-ruby30-openstruct-tests.patch')
-rw-r--r-- | dev-ruby/safe_yaml/files/safe_yaml-1.0.5-ruby30-openstruct-tests.patch | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/dev-ruby/safe_yaml/files/safe_yaml-1.0.5-ruby30-openstruct-tests.patch b/dev-ruby/safe_yaml/files/safe_yaml-1.0.5-ruby30-openstruct-tests.patch new file mode 100644 index 000000000000..9b597276617b --- /dev/null +++ b/dev-ruby/safe_yaml/files/safe_yaml-1.0.5-ruby30-openstruct-tests.patch @@ -0,0 +1,69 @@ +From: Sergio Durigan Junior <sergiodj@debian.org> +Date: Fri, 28 Jan 2022 16:35:01 -0500 +Subject: Adjust tests to reflect OpenStruct changes on Ruby3.0 + +Ref.: https://github.com/ruby/psych/issues/540 + +OpenStruct on Ruby3.0 changed its marshalling/unmarshalling code, +which is now impacting safe_yaml's testcase. The two adjustments that +needed to be made are: + +- OpenStruct's instance_variable_get will now symbolize its hash keys, + instead of using strings. + +- OpenStruct's to_yaml method will not output the 'table' entity + anymore. + +Signed-off-by: Sergio Durigan Junior <sergiodj@sergiodj.net> + +Forwarded: yes, https://github.com/dtao/safe_yaml/pull/102 +--- + spec/safe_yaml_spec.rb | 26 +++++++++++++++++++++++--- + 1 file changed, 23 insertions(+), 3 deletions(-) + +diff --git a/spec/safe_yaml_spec.rb b/spec/safe_yaml_spec.rb +index aa701a4..1081173 100644 +--- a/spec/safe_yaml_spec.rb ++++ b/spec/safe_yaml_spec.rb +@@ -318,7 +318,13 @@ describe YAML do + it "will allow objects to be deserialized for whitelisted tags" do + result = YAML.safe_load("--- !ruby/object:OpenStruct\ntable:\n foo: bar\n") + expect(result).to be_a(OpenStruct) +- expect(result.instance_variable_get(:@table)).to eq({ "foo" => "bar" }) ++ if RUBY_VERSION < '3.0' ++ expect(result.instance_variable_get(:@table)).to eq({ "foo" => "bar" }) ++ else ++ # Ruby3.0's OpenStruct will now symbolize the hash key. ++ # Ref.: https://github.com/ruby/psych/issues/540 ++ expect(result.instance_variable_get(:@table)).to eq({ :foo => "bar" }) ++ end + end + + it "will not deserialize objects without whitelisted tags" do +@@ -463,10 +469,24 @@ describe YAML do + + it "allows the default option to be overridden on a per-call basis" do + result = safe_load_round_trip(OpenStruct.new(:foo => "bar"), :whitelisted_tags => []) +- expect(result).to eq({ "table" => { :foo => "bar" } }) ++ if RUBY_VERSION < '3.0' ++ expect(result).to eq({ "table" => { :foo => "bar" } }) ++ else ++ # Ruby3.0's OpenStruct's to_yaml method doesn't output the ++ # 'table' entity anymore. ++ # Ref.: https://github.com/ruby/psych/issues/540 ++ expect(result).to eq({ "foo" => "bar" }) ++ end + + result = safe_load_round_trip(OpenStruct.new(:foo => "bar"), :deserialize_symbols => false, :whitelisted_tags => []) +- expect(result).to eq({ "table" => { ":foo" => "bar" } }) ++ if RUBY_VERSION < '3.0' ++ expect(result).to eq({ "table" => { ":foo" => "bar" } }) ++ else ++ # Ruby3.0's OpenStruct's to_yaml method doesn't output the ++ # 'table' entity anymore. ++ # Ref.: https://github.com/ruby/psych/issues/540 ++ expect(result).to eq({ "foo" => "bar" }) ++ end + end + end + end |