From dbcdac00e6b9b9b72c0679e54d2ecef02a9cf3bc Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Wed, 19 Apr 2023 18:27:31 +0900 Subject: [PATCH] [rubygems/rubygems] Revert "Bundler::YAMLSerializer.load couldn't raise error when invalid yaml was provided" This reverts commit https://github.com/rubygems/rubygems/commit/cfcfde04c783. https://github.com/rubygems/rubygems/commit/ac21ae7083 --- spec/bundler/bundler/friendly_errors_spec.rb | 23 ++++++++++++++++++++ test/rubygems/test_gem_config_file.rb | 15 +++++++++++++ 2 files changed, 38 insertions(+) diff --git a/spec/bundler/bundler/friendly_errors_spec.rb b/spec/bundler/bundler/friendly_errors_spec.rb index 17ca15ed8b..37afe488f3 100644 --- a/spec/bundler/bundler/friendly_errors_spec.rb +++ b/spec/bundler/bundler/friendly_errors_spec.rb @@ -5,6 +5,29 @@ require "bundler/friendly_errors" require "cgi" RSpec.describe Bundler, "friendly errors" do + context "with invalid YAML in .gemrc" do + before do + File.open(home(".gemrc"), "w") do |f| + f.write "invalid: yaml: hah" + end + end + + after do + FileUtils.rm(home(".gemrc")) + end + + it "reports a relevant friendly error message" do + gemfile <<-G + source "#{file_uri_for(gem_repo1)}" + gem "rack" + G + + bundle :install, :env => { "DEBUG" => "true" } + + expect(err).to include("Failed to load #{home(".gemrc")}") + end + end + it "calls log_error in case of exception" do exception = Exception.new expect(Bundler::FriendlyErrors).to receive(:exit_status).with(exception).and_return(1) diff --git a/test/rubygems/test_gem_config_file.rb b/test/rubygems/test_gem_config_file.rb index 28651d2e9a..d15a0fb793 100644 --- a/test/rubygems/test_gem_config_file.rb +++ b/test/rubygems/test_gem_config_file.rb @@ -465,6 +465,21 @@ if you believe they were disclosed to a third party. assert_equal %w[http://even-more-gems.example.com], Gem.sources end + def test_ignore_invalid_config_file + File.open @temp_conf, "w" do |fp| + fp.puts "invalid: yaml:" + end + + begin + verbose = $VERBOSE + $VERBOSE = nil + + util_config_file + ensure + $VERBOSE = verbose + end + end + def test_load_ssl_verify_mode_from_config File.open @temp_conf, "w" do |fp| fp.puts ":ssl_verify_mode: 1"