зеркало из https://github.com/github/ruby.git
[rubygems/rubygems] Improve resolver error messages
Use a more standard naming for gems. https://github.com/rubygems/rubygems/commit/75121e83f1
This commit is contained in:
Родитель
ce6fc20f97
Коммит
af4b4fd19b
|
@ -264,30 +264,18 @@ module Bundler
|
|||
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
|
||||
|
|
|
@ -867,7 +867,7 @@ RSpec.describe "bundle exec" do
|
|||
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 @@ Run `bundle install` to install missing gems.
|
|||
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
|
||||
|
||||
|
|
|
@ -89,7 +89,7 @@ RSpec.describe "bundle install with git sources" do
|
|||
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 @@ RSpec.describe "bundle install with git sources" do
|
|||
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 @@ RSpec.describe "bundle install with git sources" do
|
|||
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче