1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[rubygems/rubygems] Improve errors a bit more

https://github.com/rubygems/rubygems/commit/f481e8f41a
This commit is contained in:
David Rodríguez 2021-12-15 13:28:50 +01:00 committed by git
parent 1537471871
commit 8d29d1292b
4 changed files with 30 additions and 10 deletions

View file

@ -287,7 +287,12 @@ module Bundler
end end
message = String.new("Could not find gem '#{requirement_label}'#{extra_message} in #{source}#{cache_message}.\n") message = String.new("Could not find gem '#{requirement_label}'#{extra_message} in #{source}#{cache_message}.\n")
message << "The source contains the following gems matching '#{matching_part}': #{specs.map(&:full_name).join(", ")}" if specs.any?
if specs.any?
message << "\nThe source contains the following gems matching '#{matching_part}':\n"
message << specs.map {|s| " * #{s.full_name}" }.join("\n")
end
message message
end end

View file

@ -867,7 +867,10 @@ RSpec.describe "bundle exec" do
let(:expected) { "" } let(:expected) { "" }
let(:expected_err) { <<-EOS.strip } let(:expected_err) { <<-EOS.strip }
Could not find gem 'rack (= 2)' in locally installed gems. Could not find gem 'rack (= 2)' in locally installed gems.
The source contains the following gems matching 'rack': rack-0.9.1, rack-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. Run `bundle install` to install missing gems.
EOS EOS
@ -894,7 +897,9 @@ Run `bundle install` to install missing gems.
let(:expected) { "" } let(:expected) { "" }
let(:expected_err) { <<-EOS.strip } let(:expected_err) { <<-EOS.strip }
Could not find gem 'rack (= 2)' in locally installed gems. Could not find gem 'rack (= 2)' in locally installed gems.
The source contains the following gems matching 'rack': rack-1.0.0
The source contains the following gems matching 'rack':
* rack-1.0.0
Run `bundle install` to install missing gems. Run `bundle install` to install missing gems.
EOS EOS

View file

@ -89,7 +89,7 @@ RSpec.describe "bundle install with git sources" do
gem "foo", "1.1", :git => "#{lib_path("foo-1.0")}" gem "foo", "1.1", :git => "#{lib_path("foo-1.0")}"
G G
expect(err).to include("The source contains the following gems matching 'foo': foo-1.0") expect(err).to include("The source contains the following gems matching 'foo':\n * foo-1.0")
end end
it "complains with version and platform if pinned specs don't exist in the git repo" do it "complains with version and platform if pinned specs don't exist in the git repo" do
@ -106,7 +106,7 @@ RSpec.describe "bundle install with git sources" do
end end
G G
expect(err).to include("The source contains the following gems matching 'only_java': only_java-1.0-java") expect(err).to include("The source contains the following gems matching 'only_java':\n * only_java-1.0-java")
end end
it "complains with multiple versions and platforms if pinned specs don't exist in the git repo" do it "complains with multiple versions and platforms if pinned specs don't exist in the git repo" do
@ -128,7 +128,7 @@ RSpec.describe "bundle install with git sources" do
end end
G G
expect(err).to include("The source contains the following gems matching 'only_java': only_java-1.0-java, only_java-1.1-java") expect(err).to include("The source contains the following gems matching 'only_java':\n * only_java-1.0-java\n * only_java-1.1-java")
end end
it "still works after moving the application directory" do it "still works after moving the application directory" do

View file

@ -298,8 +298,13 @@ RSpec.describe "bundle install with specific platforms" do
bundle "install", :raise_on_error => false bundle "install", :raise_on_error => false
end end
expect(err).to include("Could not find gem 'sorbet-static (= 0.5.6433) arm64-darwin-21' in rubygems repository #{file_uri_for(gem_repo2)}/ or installed locally.") expect(err).to include <<~ERROR.rstrip
expect(err).to include("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") 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
end end
it "does not resolve if the current platform does not match any of available platform specific variants for a transitive dependency" do it "does not resolve if the current platform does not match any of available platform specific variants for a transitive dependency" do
@ -319,8 +324,13 @@ RSpec.describe "bundle install with specific platforms" do
bundle "install", :raise_on_error => false bundle "install", :raise_on_error => false
end end
expect(err).to include("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.") expect(err).to include <<~ERROR.rstrip
expect(err).to include("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") 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
end end
private private