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/