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
def test_nil
yml = Psych.dump nil
assert_match(/--- \n(?:\.\.\.\n)?/, yml)
assert_match(/---[ ]?\n(?:\.\.\.\n)?/, yml)
assert_nil Psych.load(yml)
end
def test_array_nil
yml = Psych.dump [nil]
assert_equal "---\n- \n", yml
assert_match(/---\n-[ ]?\n/, yml)
assert_equal [nil], Psych.load(yml)
end

View File

@ -121,17 +121,17 @@ class TestPsych < Psych::TestCase
def test_domain_types
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
end
Psych.load('--- !foo.bar,2002/foo hello')
Psych.load('--- !foo.bar/2002:foo hello')
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
Psych.load("--- !foo.bar,2002/foo\nhello: world")
Psych.load("--- !foo.bar/2002:foo\nhello: world")
assert_equal({ 'hello' => 'world' }, got)
end
@ -170,16 +170,13 @@ class TestPsych < Psych::TestCase
types = []
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
- !tag:yaml.org,2002:foo bar
- !tag:example.com,2002:foo bar
- !tag:example.com:2002:foo bar
eoyml
assert_equal [
["tag:yaml.org,2002:foo", "bar"],
["tag:example.com,2002:foo", "bar"]
["tag:example.com:2002:foo", "bar"]
], types
end

View File

@ -617,11 +617,11 @@ EOY
raise ArgumentError, "Not a Hash in domain.tld,2002/invoice: " + val.inspect
end
}
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", 'invoice', &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
# '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'.
# This does not effect '^customer' below
# because it is does not specify a prefix.
@ -705,7 +705,7 @@ EOY
end
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}"
}
assert_parse_only(
@ -717,7 +717,7 @@ picture: !binary |
Pz7Y6OjuDg4J+fn5OTk6enp
56enmleECcgggoBADs=
hmm: !somewhere.com,2002/type |
hmm: !somewhere.com/2002:type |
family above is short for
http://somewhere.com/type
EOY
@ -726,7 +726,7 @@ EOY
def test_spec_application_family
# 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
val << "Shape Container"
val
@ -743,13 +743,13 @@ EOY
raise ArgumentError, "Invalid graph of type #{val.class}: " + val.inspect
end
}
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/text', &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/text', &one_shape_proc )
# MODIFIED to remove invalid Psych
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
- !clarkevans.com,2002/graph/shape
- !clarkevans.com/2002:graph/shape
- !/graph/circle
center: &ORIGIN {x: 73, y: 129}
radius: 7
@ -771,8 +771,8 @@ EOY
# have the same type and value.
- 10.0
- !float 10
- !yaml.org,2002/float '10'
- !yaml.org,2002/float "\\
- !yaml.org/2002/float '10'
- !yaml.org/2002/float "\\
1\\
0"
EOY

View File

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