diff options
author | David RodrÃguez <deivid.rodriguez@riseup.net> | 2022-06-25 21:40:34 +0200 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2022-06-27 23:35:45 +0900 |
commit | f9f85a513b9b6580dcff03872391cf387d0105b5 (patch) | |
tree | dfb7c6845a69098fca8ca0ac3c47e791e8149fc3 | |
parent | 8c6c3e30f3a86ba0b697a0d99efe8ff4585c4a42 (diff) | |
download | ruby-f9f85a513b9b6580dcff03872391cf387d0105b5.tar.gz |
[rubygems/rubygems] Print error messages just once in verbose mode
When running a command with the `--verbose` flag that ends up raising a
`BundlerError`, Bundler will unnecessarily print the error twice.
This commit fixes the issue by removing the duplicate logging.
https://github.com/rubygems/rubygems/commit/689004a164
-rw-r--r-- | lib/bundler/friendly_errors.rb | 7 | ||||
-rw-r--r-- | spec/bundler/bundler/friendly_errors_spec.rb | 1 | ||||
-rw-r--r-- | spec/bundler/install/gemfile/specific_platform_spec.rb | 40 |
3 files changed, 35 insertions, 13 deletions
diff --git a/lib/bundler/friendly_errors.rb b/lib/bundler/friendly_errors.rb index ff6cdc4123..d0d2a6679a 100644 --- a/lib/bundler/friendly_errors.rb +++ b/lib/bundler/friendly_errors.rb @@ -29,8 +29,11 @@ module Bundler Bundler.ui.error error.message Bundler.ui.trace error.orig_exception when BundlerError - Bundler.ui.error error.message, :wrap => true - Bundler.ui.trace error + if Bundler.ui.debug? + Bundler.ui.trace error + else + Bundler.ui.error error.message, :wrap => true + end when Thor::Error Bundler.ui.error error.message when LoadError diff --git a/spec/bundler/bundler/friendly_errors_spec.rb b/spec/bundler/bundler/friendly_errors_spec.rb index 496191f891..69fba7b826 100644 --- a/spec/bundler/bundler/friendly_errors_spec.rb +++ b/spec/bundler/bundler/friendly_errors_spec.rb @@ -104,7 +104,6 @@ RSpec.describe Bundler, "friendly errors" do expect(Bundler.ui).to receive(:error).with(error.message, :wrap => true) Bundler::FriendlyErrors.log_error(error) end - it_behaves_like "Bundler.ui receive trace", Bundler::BundlerError.new end context "Thor::Error" do diff --git a/spec/bundler/install/gemfile/specific_platform_spec.rb b/spec/bundler/install/gemfile/specific_platform_spec.rb index 113a0a1352..3e5a0a6270 100644 --- a/spec/bundler/install/gemfile/specific_platform_spec.rb +++ b/spec/bundler/install/gemfile/specific_platform_spec.rb @@ -294,17 +294,27 @@ RSpec.describe "bundle install with specific platforms" do gem "sorbet-static", "0.5.6433" G - simulate_platform "arm64-darwin-21" do - bundle "install", :raise_on_error => false - end - - expect(err).to include <<~ERROR.rstrip + error_message = <<~ERROR.strip Could not find gem 'sorbet-static (= 0.5.6433) arm64-darwin-21' in rubygems repository #{file_uri_for(gem_repo2)}/ or installed locally. The source contains the following gems matching 'sorbet-static (= 0.5.6433)': * sorbet-static-0.5.6433-universal-darwin-20 * sorbet-static-0.5.6433-x86_64-linux ERROR + + simulate_platform "arm64-darwin-21" do + bundle "install", :raise_on_error => false + end + + expect(err).to include(error_message).once + + # Make sure it doesn't print error twice in verbose mode + + simulate_platform "arm64-darwin-21" do + bundle "install --verbose", :raise_on_error => false + end + + expect(err).to include(error_message).once end it "does not resolve if the current platform does not match any of available platform specific variants for a transitive dependency" do @@ -320,17 +330,27 @@ RSpec.describe "bundle install with specific platforms" do gem "sorbet", "0.5.6433" G - simulate_platform "arm64-darwin-21" do - bundle "install", :raise_on_error => false - end - - expect(err).to include <<~ERROR.rstrip + error_message = <<~ERROR.strip Could not find gem 'sorbet-static (= 0.5.6433) arm64-darwin-21', which is required by gem 'sorbet (= 0.5.6433)', in rubygems repository #{file_uri_for(gem_repo2)}/ or installed locally. The source contains the following gems matching 'sorbet-static (= 0.5.6433)': * sorbet-static-0.5.6433-universal-darwin-20 * sorbet-static-0.5.6433-x86_64-linux ERROR + + simulate_platform "arm64-darwin-21" do + bundle "install", :raise_on_error => false + end + + expect(err).to include(error_message).once + + # Make sure it doesn't print error twice in verbose mode + + simulate_platform "arm64-darwin-21" do + bundle "install --verbose", :raise_on_error => false + end + + expect(err).to include(error_message).once end private |