merge revision(s) 7e289cdf3fed588b2d5a6973e29f9ff95cb8d76c: [Backport #16949]

[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

https://github.com/ruby/psych/commit/3f5e520fd3

Note that this is not security fix, but need for release processs.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_5@67885 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
usa 2020-06-13 16:03:14 +00:00
parent 6d20bf22fe
commit a7acd35380
4 changed files with 26 additions and 29 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

@ -121,17 +121,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
@ -170,16 +170,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

View File

@ -1,10 +1,10 @@
#define RUBY_VERSION "2.5.8" #define RUBY_VERSION "2.5.9"
#define RUBY_RELEASE_DATE "2020-03-31" #define RUBY_RELEASE_DATE "2020-06-14"
#define RUBY_PATCHLEVEL 224 #define RUBY_PATCHLEVEL 225
#define RUBY_RELEASE_YEAR 2020 #define RUBY_RELEASE_YEAR 2020
#define RUBY_RELEASE_MONTH 3 #define RUBY_RELEASE_MONTH 6
#define RUBY_RELEASE_DAY 31 #define RUBY_RELEASE_DAY 14
#include "ruby/version.h" #include "ruby/version.h"