163 lines
6.0 KiB
Diff
163 lines
6.0 KiB
Diff
|
From 3c55d93cf68b1a969b90b306de4dd8b88d74a2f2 Mon Sep 17 00:00:00 2001
|
||
|
From: nagachika <nagachika@ruby-lang.org>
|
||
|
Date: Sat, 13 Jun 2020 11:29:51 +0900
|
||
|
Subject: [PATCH] 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
|
||
|
---
|
||
|
test/psych/test_nil.rb | 4 ++--
|
||
|
test/psych/test_psych.rb | 17 +++++++----------
|
||
|
test/psych/test_yaml.rb | 24 ++++++++++++------------
|
||
|
version.h | 4 ++--
|
||
|
4 files changed, 23 insertions(+), 26 deletions(-)
|
||
|
|
||
|
diff --git a/test/psych/test_nil.rb b/test/psych/test_nil.rb
|
||
|
index 910a2e697def..bcbbcb9c9397 100644
|
||
|
--- a/test/psych/test_nil.rb
|
||
|
+++ b/test/psych/test_nil.rb
|
||
|
@@ -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
|
||
|
|
||
|
diff --git a/test/psych/test_psych.rb b/test/psych/test_psych.rb
|
||
|
index eeadc864ef4e..e557feffb76a 100644
|
||
|
--- a/test/psych/test_psych.rb
|
||
|
+++ b/test/psych/test_psych.rb
|
||
|
@@ -178,17 +178,17 @@ def test_add_builtin_type
|
||
|
|
||
|
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
|
||
|
|
||
|
@@ -295,16 +295,13 @@ def test_callbacks
|
||
|
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
|
||
|
|
||
|
diff --git a/test/psych/test_yaml.rb b/test/psych/test_yaml.rb
|
||
|
index 5fa759c981b2..0dfd60f89434 100644
|
||
|
--- a/test/psych/test_yaml.rb
|
||
|
+++ b/test/psych/test_yaml.rb
|
||
|
@@ -617,11 +617,11 @@ def test_spec_domain_prefix
|
||
|
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 @@ def test_spec_override_anchor
|
||
|
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 @@ def test_spec_explicit_families
|
||
|
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 @@ def test_spec_explicit_families
|
||
|
|
||
|
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 @@ def test_spec_application_family
|
||
|
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 @@ def test_spec_float_explicit
|
||
|
# 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
|