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

[ruby/psych] Fixing compatibility with libyaml 0.2.5

The main issue is that commas aren't allowed in local tags.  libyaml
was updated to follow the spec, and our tests were out of date.

See: https://github.com/yaml/libyaml/issues/196

3f5e520fd3
This commit is contained in:
Aaron Patterson 2020-06-03 10:18:34 -07:00 committed by Nobuyoshi Nakada
parent 6b9e363aa0
commit 7e289cdf3f
Notes: git 2020-06-05 11:50:24 +09:00
3 changed files with 21 additions and 24 deletions

View file

@ -5,13 +5,13 @@ module Psych
class TestNil < TestCase class TestNil < TestCase
def test_nil def test_nil
yml = Psych.dump nil yml = Psych.dump nil
assert_match(/--- \n(?:\.\.\.\n)?/, yml) assert_match(/---[ ]?\n(?:\.\.\.\n)?/, yml)
assert_nil Psych.load(yml) assert_nil Psych.load(yml)
end end
def test_array_nil def test_array_nil
yml = Psych.dump [nil] yml = Psych.dump [nil]
assert_equal "---\n- \n", yml assert_match(/---\n-[ ]?\n/, yml)
assert_equal [nil], Psych.load(yml) assert_equal [nil], Psych.load(yml)
end end

View file

@ -178,17 +178,17 @@ class TestPsych < Psych::TestCase
def test_domain_types def test_domain_types
got = nil got = nil
Psych.add_domain_type 'foo.bar,2002', 'foo' do |type, val| Psych.add_domain_type 'foo.bar/2002', 'foo' do |type, val|
got = val got = val
end end
Psych.load('--- !foo.bar,2002/foo hello') Psych.load('--- !foo.bar/2002:foo hello')
assert_equal 'hello', got assert_equal 'hello', got
Psych.load("--- !foo.bar,2002/foo\n- hello\n- world") Psych.load("--- !foo.bar/2002:foo\n- hello\n- world")
assert_equal %w{ hello world }, got assert_equal %w{ hello world }, got
Psych.load("--- !foo.bar,2002/foo\nhello: world") Psych.load("--- !foo.bar/2002:foo\nhello: world")
assert_equal({ 'hello' => 'world' }, got) assert_equal({ 'hello' => 'world' }, got)
end end
@ -311,16 +311,13 @@ class TestPsych < Psych::TestCase
types = [] types = []
appender = lambda { |*args| types << args } appender = lambda { |*args| types << args }
Psych.add_builtin_type('foo', &appender) Psych.add_domain_type('example.com:2002', 'foo', &appender)
Psych.add_domain_type('example.com,2002', 'foo', &appender)
Psych.load <<-eoyml Psych.load <<-eoyml
- !tag:yaml.org,2002:foo bar - !tag:example.com:2002:foo bar
- !tag:example.com,2002:foo bar
eoyml eoyml
assert_equal [ assert_equal [
["tag:yaml.org,2002:foo", "bar"], ["tag:example.com:2002:foo", "bar"]
["tag:example.com,2002:foo", "bar"]
], types ], types
end end

View file

@ -617,11 +617,11 @@ EOY
raise ArgumentError, "Not a Hash in domain.tld,2002/invoice: " + val.inspect raise ArgumentError, "Not a Hash in domain.tld,2002/invoice: " + val.inspect
end end
} }
Psych.add_domain_type( "domain.tld,2002", 'invoice', &customer_proc ) Psych.add_domain_type( "domain.tld/2002", 'invoice', &customer_proc )
Psych.add_domain_type( "domain.tld,2002", 'customer', &customer_proc ) Psych.add_domain_type( "domain.tld/2002", 'customer', &customer_proc )
assert_parse_only( { "invoice"=> { "customers"=> [ { "given"=>"Chris", "type"=>"domain customer", "family"=>"Dumars" } ], "type"=>"domain invoice" } }, <<EOY assert_parse_only( { "invoice"=> { "customers"=> [ { "given"=>"Chris", "type"=>"domain customer", "family"=>"Dumars" } ], "type"=>"domain invoice" } }, <<EOY
# 'http://domain.tld,2002/invoice' is some type family. # 'http://domain.tld,2002/invoice' is some type family.
invoice: !domain.tld,2002/invoice invoice: !domain.tld/2002:invoice
# 'seq' is shorthand for 'http://yaml.org/seq'. # 'seq' is shorthand for 'http://yaml.org/seq'.
# This does not effect '^customer' below # This does not effect '^customer' below
# because it is does not specify a prefix. # because it is does not specify a prefix.
@ -705,7 +705,7 @@ EOY
end end
def test_spec_explicit_families def test_spec_explicit_families
Psych.add_domain_type( "somewhere.com,2002", 'type' ) { |type, val| Psych.add_domain_type( "somewhere.com/2002", 'type' ) { |type, val|
"SOMEWHERE: #{val}" "SOMEWHERE: #{val}"
} }
assert_parse_only( assert_parse_only(
@ -717,7 +717,7 @@ picture: !binary |
Pz7Y6OjuDg4J+fn5OTk6enp Pz7Y6OjuDg4J+fn5OTk6enp
56enmleECcgggoBADs= 56enmleECcgggoBADs=
hmm: !somewhere.com,2002/type | hmm: !somewhere.com/2002:type |
family above is short for family above is short for
http://somewhere.com/type http://somewhere.com/type
EOY EOY
@ -726,7 +726,7 @@ EOY
def test_spec_application_family def test_spec_application_family
# Testing the clarkevans.com graphs # Testing the clarkevans.com graphs
Psych.add_domain_type( "clarkevans.com,2002", 'graph/shape' ) { |type, val| Psych.add_domain_type( "clarkevans.com/2002", 'graph/shape' ) { |type, val|
if Array === val if Array === val
val << "Shape Container" val << "Shape Container"
val val
@ -743,13 +743,13 @@ EOY
raise ArgumentError, "Invalid graph of type #{val.class}: " + val.inspect raise ArgumentError, "Invalid graph of type #{val.class}: " + val.inspect
end end
} }
Psych.add_domain_type( "clarkevans.com,2002", 'graph/circle', &one_shape_proc ) Psych.add_domain_type( "clarkevans.com/2002", 'graph/circle', &one_shape_proc )
Psych.add_domain_type( "clarkevans.com,2002", 'graph/line', &one_shape_proc ) Psych.add_domain_type( "clarkevans.com/2002", 'graph/line', &one_shape_proc )
Psych.add_domain_type( "clarkevans.com,2002", 'graph/text', &one_shape_proc ) Psych.add_domain_type( "clarkevans.com/2002", 'graph/text', &one_shape_proc )
# MODIFIED to remove invalid Psych # MODIFIED to remove invalid Psych
assert_parse_only( assert_parse_only(
[[{"radius"=>7, "center"=>{"x"=>73, "y"=>129}, "TYPE"=>"Shape: graph/circle"}, {"finish"=>{"x"=>89, "y"=>102}, "TYPE"=>"Shape: graph/line", "start"=>{"x"=>73, "y"=>129}}, {"TYPE"=>"Shape: graph/text", "value"=>"Pretty vector drawing.", "start"=>{"x"=>73, "y"=>129}, "color"=>16772795}, "Shape Container"]], <<EOY [[{"radius"=>7, "center"=>{"x"=>73, "y"=>129}, "TYPE"=>"Shape: graph/circle"}, {"finish"=>{"x"=>89, "y"=>102}, "TYPE"=>"Shape: graph/line", "start"=>{"x"=>73, "y"=>129}}, {"TYPE"=>"Shape: graph/text", "value"=>"Pretty vector drawing.", "start"=>{"x"=>73, "y"=>129}, "color"=>16772795}, "Shape Container"]], <<EOY
- !clarkevans.com,2002/graph/shape - !clarkevans.com/2002:graph/shape
- !/graph/circle - !/graph/circle
center: &ORIGIN {x: 73, y: 129} center: &ORIGIN {x: 73, y: 129}
radius: 7 radius: 7
@ -771,8 +771,8 @@ EOY
# have the same type and value. # have the same type and value.
- 10.0 - 10.0
- !float 10 - !float 10
- !yaml.org,2002/float '10' - !yaml.org/2002/float '10'
- !yaml.org,2002/float "\\ - !yaml.org/2002/float "\\
1\\ 1\\
0" 0"
EOY EOY