[前][次][番号順一覧][スレッド一覧]

ruby-changes:67490

From: David <ko1@a...>
Date: Tue, 31 Aug 2021 19:08:13 +0900 (JST)
Subject: [ruby-changes:67490] 4bc87cb1fb (master): [rubygems/rubygems] Remove `syck` traces from `bundler`

https://git.ruby-lang.org/ruby.git/commit/?id=4bc87cb1fb

From 4bc87cb1fb9ecbd227720bd48836935996574166 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@r...>
Date: Wed, 8 Jul 2020 23:26:28 +0200
Subject: [rubygems/rubygems] Remove `syck` traces from `bundler`

Same reason as in the previous commit.

https://github.com/rubygems/rubygems/commit/f00a6c8516
---
 lib/bundler.rb                                     |  4 +---
 lib/bundler/endpoint_specification.rb              |  8 --------
 lib/bundler/psyched_yaml.rb                        | 14 +------------
 lib/bundler/rubygems_integration.rb                |  2 +-
 spec/bundler/bundler/bundler_spec.rb               | 24 ----------------------
 .../bundler/bundler/endpoint_specification_spec.rb | 16 ---------------
 spec/bundler/bundler/psyched_yaml_spec.rb          |  9 --------
 7 files changed, 3 insertions(+), 74 deletions(-)
 delete mode 100644 spec/bundler/bundler/psyched_yaml_spec.rb

diff --git a/lib/bundler.rb b/lib/bundler.rb
index dcbc3fd..f2d874b 100644
--- a/lib/bundler.rb
+++ b/lib/bundler.rb
@@ -647,10 +647,8 @@ EOF https://github.com/ruby/ruby/blob/trunk/lib/bundler.rb#L647
     def eval_yaml_gemspec(path, contents)
       require_relative "bundler/psyched_yaml"
 
-      # If the YAML is invalid, Syck raises an ArgumentError, and Psych
-      # raises a Psych::SyntaxError. See psyched_yaml.rb for more info.
       Gem::Specification.from_yaml(contents)
-    rescue YamlLibrarySyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
+    rescue ::Psych::SyntaxError, ArgumentError, Gem::EndOfYAMLException, Gem::Exception
       eval_gemspec(path, contents)
     end
 
diff --git a/lib/bundler/endpoint_specification.rb b/lib/bundler/endpoint_specification.rb
index 476151a..6cf597b 100644
--- a/lib/bundler/endpoint_specification.rb
+++ b/lib/bundler/endpoint_specification.rb
@@ -3,7 +3,6 @@ https://github.com/ruby/ruby/blob/trunk/lib/bundler/endpoint_specification.rb#L3
 module Bundler
   # used for Creating Specifications from the Gemcutter Endpoint
   class EndpointSpecification < Gem::Specification
-    ILLFORMED_MESSAGE = 'Ill-formed requirement ["#<YAML::Syck::DefaultKey'.freeze
     include MatchPlatform
 
     attr_reader :name, :version, :platform, :required_rubygems_version, :required_ruby_version, :checksum
@@ -129,13 +128,6 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/endpoint_specification.rb#L128
 
     def build_dependency(name, requirements)
       Gem::Dependency.new(name, requirements)
-    rescue ArgumentError => e
-      raise unless e.message.include?(ILLFORMED_MESSAGE)
-      puts # we shouldn't print the error message on the "fetching info" status line
-      raise GemspecError,
-        "Unfortunately, the gem #{name} (#{version}) has an invalid " \
-        "gemspec.\nPlease ask the gem author to yank the bad version to fix " \
-        "this issue. For more information, see http://bit.ly/syck-defaultkey."
     end
   end
 end
diff --git a/lib/bundler/psyched_yaml.rb b/lib/bundler/psyched_yaml.rb
index 463d52d..3d98930 100644
--- a/lib/bundler/psyched_yaml.rb
+++ b/lib/bundler/psyched_yaml.rb
@@ -1,22 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/lib/bundler/psyched_yaml.rb#L1
 # frozen_string_literal: true
 
-# Psych could be in the stdlib
-# but it's too late if Syck is already loaded
 begin
-  require "psych" unless defined?(Syck)
+  require "psych"
 rescue LoadError
   # Apparently Psych wasn't available. Oh well.
 end
 
 # At least load the YAML stdlib, whatever that may be
 require "yaml" unless defined?(YAML.dump)
-
-module Bundler
-  # On encountering invalid YAML,
-  # Psych raises Psych::SyntaxError
-  if defined?(::Psych::SyntaxError)
-    YamlLibrarySyntaxError = ::Psych::SyntaxError
-  else # Syck raises ArgumentError
-    YamlLibrarySyntaxError = ::ArgumentError
-  end
-end
diff --git a/lib/bundler/rubygems_integration.rb b/lib/bundler/rubygems_integration.rb
index 98982b0..26cc4d8 100644
--- a/lib/bundler/rubygems_integration.rb
+++ b/lib/bundler/rubygems_integration.rb
@@ -119,7 +119,7 @@ module Bundler https://github.com/ruby/ruby/blob/trunk/lib/bundler/rubygems_integration.rb#L119
       Bundler.ui.error "#{e.class}: #{e.message}"
       Bundler.ui.trace e
       raise
-    rescue YamlLibrarySyntaxError => e
+    rescue ::Psych::SyntaxError => e
       raise YamlSyntaxError.new(e, "Your RubyGems configuration, which is " \
         "usually located in ~/.gemrc, contains invalid YAML syntax.")
     end
diff --git a/spec/bundler/bundler/bundler_spec.rb b/spec/bundler/bundler/bundler_spec.rb
index b8191fe..aeadcf9 100644
--- a/spec/bundler/bundler/bundler_spec.rb
+++ b/spec/bundler/bundler/bundler_spec.rb
@@ -21,30 +21,6 @@ RSpec.describe Bundler do https://github.com/ruby/ruby/blob/trunk/spec/bundler/bundler/bundler_spec.rb#L21
       it "catches YAML syntax errors" do
         expect { subject }.to raise_error(Bundler::GemspecError, /error while loading `test.gemspec`/)
       end
-
-      context "on Rubies with a settable YAML engine", :if => defined?(YAML::ENGINE) do
-        context "with Syck as YAML::Engine" do
-          it "raises a GemspecError after YAML load throws ArgumentError" do
-            orig_yamler = YAML::ENGINE.yamler
-            YAML::ENGINE.yamler = "syck"
-
-            expect { subject }.to raise_error(Bundler::GemspecError)
-
-            YAML::ENGINE.yamler = orig_yamler
-          end
-        end
-
-        context "with Psych as YAML::Engine" do
-          it "raises a GemspecError after YAML load throws Psych::SyntaxError" do
-            orig_yamler = YAML::ENGINE.yamler
-            YAML::ENGINE.yamler = "psych"
-
-            expect { subject }.to raise_error(Bundler::GemspecError)
-
-            YAML::ENGINE.yamler = orig_yamler
-          end
-        end
-      end
     end
 
     context "with correct YAML file", :if => defined?(Encoding) do
diff --git a/spec/bundler/bundler/endpoint_specification_spec.rb b/spec/bundler/bundler/endpoint_specification_spec.rb
index a9371f6..2e2c16e 100644
--- a/spec/bundler/bundler/endpoint_specification_spec.rb
+++ b/spec/bundler/bundler/endpoint_specification_spec.rb
@@ -32,22 +32,6 @@ RSpec.describe Bundler::EndpointSpecification do https://github.com/ruby/ruby/blob/trunk/spec/bundler/bundler/endpoint_specification_spec.rb#L32
         )
       end
     end
-
-    context "when there is an ill formed requirement" do
-      before do
-        allow(Gem::Dependency).to receive(:new).with(name, [requirement1, requirement2]) {
-          raise ArgumentError.new("Ill-formed requirement [\"#<YAML::Syck::DefaultKey")
-        }
-        # Eliminate extra line break in rspec output due to `puts` in `#build_dependency`
-        allow(subject).to receive(:puts) {}
-      end
-
-      it "should raise a Bundler::GemspecError with invalid gemspec message" do
-        expect { subject.send(:build_dependency, name, [requirement1, requirement2]) }.to raise_error(
-          Bundler::GemspecError, /Unfortunately, the gem foo \(1\.0\.0\) has an invalid gemspec/
-        )
-      end
-    end
   end
 
   describe "#parse_metadata" do
diff --git a/spec/bundler/bundler/psyched_yaml_spec.rb b/spec/bundler/bundler/psyched_yaml_spec.rb
deleted file mode 100644
index d5d68c5..0000000
--- a/spec/bundler/bundler/psyched_yaml_spec.rb
+++ /dev/null
@@ -1,9 +0,0 @@ https://github.com/ruby/ruby/blob/trunk/spec/bundler/bundler/endpoint_specification_spec.rb#L0
-# frozen_string_literal: true
-
-require "bundler/psyched_yaml"
-
-RSpec.describe "Bundler::YamlLibrarySyntaxError" do
-  it "is raised on YAML parse errors" do
-    expect { YAML.parse "{foo" }.to raise_error(Bundler::YamlLibrarySyntaxError)
-  end
-end
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]