Blob Blame History Raw
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
@@ -121,17 +121,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
 
@@ -170,16 +170,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