diff options
author | Aaron Patterson <tenderlove@ruby-lang.org> | 2022-08-08 09:32:43 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-08 09:32:43 -0700 |
commit | 89164dcca205773daf6f9aff6e4efc86793df3d7 (patch) | |
tree | 72d21f3d0e2755d4a0601fd5f9d69cfb6b2a672c | |
parent | c12823abb03385cc155c01992a3a108d4c76c3d7 (diff) | |
parent | 0c11ddcf4636cfa415a2d4ff5a5222830605b086 (diff) | |
download | psych-89164dcca205773daf6f9aff6e4efc86793df3d7.tar.gz |
Merge pull request #567 from amomchilov/new-AliasesNotEnabled-error
Raise specific error when aliases are not enabled
-rw-r--r-- | lib/psych.rb | 2 | ||||
-rw-r--r-- | lib/psych/exception.rb | 7 | ||||
-rw-r--r-- | lib/psych/visitors/to_ruby.rb | 2 | ||||
-rw-r--r-- | test/psych/helper.rb | 6 | ||||
-rw-r--r-- | test/psych/test_array.rb | 2 | ||||
-rw-r--r-- | test/psych/test_hash.rb | 2 | ||||
-rw-r--r-- | test/psych/test_merge_keys.rb | 2 | ||||
-rw-r--r-- | test/psych/test_object.rb | 2 | ||||
-rw-r--r-- | test/psych/test_safe_load.rb | 2 |
9 files changed, 17 insertions, 10 deletions
diff --git a/lib/psych.rb b/lib/psych.rb index 42d79ef..4a2ab58 100644 --- a/lib/psych.rb +++ b/lib/psych.rb @@ -307,7 +307,7 @@ module Psych # A Psych::DisallowedClass exception will be raised if the yaml contains a # class that isn't in the +permitted_classes+ list. # - # A Psych::BadAlias exception will be raised if the yaml contains aliases + # A Psych::AliasesNotEnabled exception will be raised if the yaml contains aliases # but the +aliases+ keyword argument is set to false. # # +filename+ will be used in the exception message if any exception is raised diff --git a/lib/psych/exception.rb b/lib/psych/exception.rb index f473b95..04a9a90 100644 --- a/lib/psych/exception.rb +++ b/lib/psych/exception.rb @@ -6,6 +6,13 @@ module Psych class BadAlias < Exception end + # Subclasses `BadAlias` for backwards compatibility + class AliasesNotEnabled < BadAlias + def initialize + super "Alias parsing was not enabled. To enable it, pass `aliases: true` to `Psych::load` or `Psych::safe_load`." + end + end + class DisallowedClass < Exception def initialize action, klass_name super "Tried to #{action} unspecified class: #{klass_name}" diff --git a/lib/psych/visitors/to_ruby.rb b/lib/psych/visitors/to_ruby.rb index 935bc74..0bf5198 100644 --- a/lib/psych/visitors/to_ruby.rb +++ b/lib/psych/visitors/to_ruby.rb @@ -427,7 +427,7 @@ module Psych class NoAliasRuby < ToRuby def visit_Psych_Nodes_Alias o - raise BadAlias, "Unknown alias: #{o.anchor}" + raise AliasesNotEnabled end end end diff --git a/test/psych/helper.rb b/test/psych/helper.rb index 0643139..4e82887 100644 --- a/test/psych/helper.rb +++ b/test/psych/helper.rb @@ -51,7 +51,7 @@ module Psych :UseVersion => true, :UseHeader => true, :SortKeys => true ) )) - rescue Psych::DisallowedClass, Psych::BadAlias + rescue Psych::DisallowedClass, Psych::BadAlias, Psych::AliasesNotEnabled assert_to_yaml obj, yaml, :unsafe_load end @@ -61,7 +61,7 @@ module Psych def assert_parse_only( obj, yaml ) begin assert_equal obj, Psych::load( yaml ) - rescue Psych::DisallowedClass, Psych::BadAlias + rescue Psych::DisallowedClass, Psych::BadAlias, Psych::AliasesNotEnabled assert_equal obj, Psych::unsafe_load( yaml ) end assert_equal obj, Psych::parse( yaml ).transform @@ -79,7 +79,7 @@ module Psych assert_equal(obj, Psych.load(v.tree.yaml)) assert_equal(obj, Psych::load(Psych.dump(obj))) assert_equal(obj, Psych::load(obj.to_yaml)) - rescue Psych::DisallowedClass, Psych::BadAlias + rescue Psych::DisallowedClass, Psych::BadAlias, Psych::AliasesNotEnabled assert_equal(obj, Psych.unsafe_load(v.tree.yaml)) assert_equal(obj, Psych::unsafe_load(Psych.dump(obj))) assert_equal(obj, Psych::unsafe_load(obj.to_yaml)) diff --git a/test/psych/test_array.rb b/test/psych/test_array.rb index 6a9931a..0dc8243 100644 --- a/test/psych/test_array.rb +++ b/test/psych/test_array.rb @@ -68,7 +68,7 @@ module Psych def test_recursive_array_uses_alias @list << @list - assert_raise(BadAlias) do + assert_raise(AliasesNotEnabled) do Psych.load(Psych.dump(@list), aliases: false) end end diff --git a/test/psych/test_hash.rb b/test/psych/test_hash.rb index 0555f6e..0efa211 100644 --- a/test/psych/test_hash.rb +++ b/test/psych/test_hash.rb @@ -125,7 +125,7 @@ eoyml h = { } h["recursive_reference"] = h - assert_raise(BadAlias) do + assert_raise(AliasesNotEnabled) do Psych.load(Psych.dump(h), aliases: false) end end diff --git a/test/psych/test_merge_keys.rb b/test/psych/test_merge_keys.rb index dcf4f1f..8d2fcea 100644 --- a/test/psych/test_merge_keys.rb +++ b/test/psych/test_merge_keys.rb @@ -117,7 +117,7 @@ development: bar: << : *foo eoyml - exp = assert_raise(Psych::BadAlias) { Psych.load yaml } + exp = assert_raise(Psych::BadAlias) { Psych.load(yaml, aliases: true) } assert_match 'foo', exp.message end diff --git a/test/psych/test_object.rb b/test/psych/test_object.rb index 227a1d1..21c2779 100644 --- a/test/psych/test_object.rb +++ b/test/psych/test_object.rb @@ -46,7 +46,7 @@ module Psych foo = Foo.new(nil) foo.parent = foo - assert_raise(BadAlias) do + assert_raise(AliasesNotEnabled) do Psych.load(Psych.dump(foo), permitted_classes: [Foo], aliases: false) end end diff --git a/test/psych/test_safe_load.rb b/test/psych/test_safe_load.rb index e57dbcb..a9ed737 100644 --- a/test/psych/test_safe_load.rb +++ b/test/psych/test_safe_load.rb @@ -28,7 +28,7 @@ module Psych b: *ABC YAML - assert_raise(Psych::BadAlias) do + assert_raise(Psych::AliasesNotEnabled) do Psych.safe_load(yaml_with_aliases) end end |