From 75121e83f1cff65d5541782aef0eda32e589e886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Tue, 14 Dec 2021 14:49:43 +0100 Subject: [PATCH] Improve resolver error messages Use a more standard naming for gems. --- bundler/lib/bundler/resolver.rb | 14 +------------- bundler/spec/commands/exec_spec.rb | 4 ++-- bundler/spec/install/gemfile/git_spec.rb | 6 +++--- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/bundler/lib/bundler/resolver.rb b/bundler/lib/bundler/resolver.rb index 5eb17a3921a0..8830621e0ef1 100644 --- a/bundler/lib/bundler/resolver.rb +++ b/bundler/lib/bundler/resolver.rb @@ -264,30 +264,18 @@ def verify_gemfile_dependencies_are_found!(requirements) else source = source_for(name) specs = source.specs.search(name) - versions_with_platforms = specs.map {|s| [s.version, s.platform] } cache_message = begin " or in gems cached in #{Bundler.settings.app_cache_path}" if Bundler.app_cache.exist? rescue GemfileNotFound nil end message = String.new("Could not find gem '#{SharedHelpers.pretty_dependency(requirement)}' in #{source}#{cache_message}.\n") - message << "The source contains the following versions of '#{name}': #{formatted_versions_with_platforms(versions_with_platforms)}" if versions_with_platforms.any? + message << "The source contains the following gems matching '#{name}': #{specs.map(&:full_name).join(", ")}" if specs.any? end raise GemNotFound, message end end - def formatted_versions_with_platforms(versions_with_platforms) - version_platform_strs = versions_with_platforms.map do |vwp| - version = vwp.first - platform = vwp.last - version_platform_str = String.new(version.to_s) - version_platform_str << " #{platform}" unless platform.nil? || platform == Gem::Platform::RUBY - version_platform_str - end - version_platform_strs.join(", ") - end - def version_conflict_message(e) # only show essential conflicts, if possible conflicts = e.conflicts.dup diff --git a/bundler/spec/commands/exec_spec.rb b/bundler/spec/commands/exec_spec.rb index e67e5b96ef21..83e808834952 100644 --- a/bundler/spec/commands/exec_spec.rb +++ b/bundler/spec/commands/exec_spec.rb @@ -867,7 +867,7 @@ def bin_path(a,b,c) let(:expected) { "" } let(:expected_err) { <<-EOS.strip } Could not find gem 'rack (= 2)' in locally installed gems. -The source contains the following versions of 'rack': 0.9.1, 1.0.0 +The source contains the following gems matching 'rack': rack-0.9.1, rack-1.0.0 Run `bundle install` to install missing gems. EOS @@ -894,7 +894,7 @@ def bin_path(a,b,c) let(:expected) { "" } let(:expected_err) { <<-EOS.strip } Could not find gem 'rack (= 2)' in locally installed gems. -The source contains the following versions of 'rack': 1.0.0 +The source contains the following gems matching 'rack': rack-1.0.0 Run `bundle install` to install missing gems. EOS diff --git a/bundler/spec/install/gemfile/git_spec.rb b/bundler/spec/install/gemfile/git_spec.rb index 150fcf2c4204..cffb73084135 100644 --- a/bundler/spec/install/gemfile/git_spec.rb +++ b/bundler/spec/install/gemfile/git_spec.rb @@ -89,7 +89,7 @@ gem "foo", "1.1", :git => "#{lib_path("foo-1.0")}" G - expect(err).to include("The source contains the following versions of 'foo': 1.0") + expect(err).to include("The source contains the following gems matching 'foo': foo-1.0") end it "complains with version and platform if pinned specs don't exist in the git repo" do @@ -106,7 +106,7 @@ end G - expect(err).to include("The source contains the following versions of 'only_java': 1.0 java") + expect(err).to include("The source contains the following gems matching 'only_java': only_java-1.0-java") end it "complains with multiple versions and platforms if pinned specs don't exist in the git repo" do @@ -128,7 +128,7 @@ end G - expect(err).to include("The source contains the following versions of 'only_java': 1.0 java, 1.1 java") + expect(err).to include("The source contains the following gems matching 'only_java': only_java-1.0-java, only_java-1.1-java") end it "still works after moving the application directory" do