[rubygems/rubygems] Fix resolver edge case
Let it deal with legacy gems with equivalent version and different dependencies. https://github.com/rubygems/rubygems/commit/b430babe97
This commit is contained in:
parent
97d52a8ea2
commit
2e0159c5f2
@ -215,7 +215,7 @@ module Bundler
|
||||
|
||||
def all_versions_for(package)
|
||||
name = package.name
|
||||
results = (@base[name] + @all_specs[name]).uniq(&:full_name)
|
||||
results = (@base[name] + @all_specs[name]).uniq {|spec| [spec.version.hash, spec.platform] }
|
||||
locked_requirement = base_requirements[name]
|
||||
results = filter_matching_specs(results, locked_requirement) if locked_requirement
|
||||
|
||||
|
@ -1076,4 +1076,31 @@ RSpec.describe "bundle install with gem sources" do
|
||||
G
|
||||
end
|
||||
end
|
||||
|
||||
context "when a gem has equivalent versions with inconsistent dependencies" do
|
||||
before do
|
||||
build_repo4 do
|
||||
build_gem "autobuild", "1.10.rc2" do |s|
|
||||
s.add_dependency "utilrb", ">= 1.6.0"
|
||||
end
|
||||
|
||||
build_gem "autobuild", "1.10.0.rc2" do |s|
|
||||
s.add_dependency "utilrb", ">= 2.0"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "does not crash unexpectedly" do
|
||||
gemfile <<~G
|
||||
source "#{file_uri_for(gem_repo4)}"
|
||||
|
||||
gem "autobuild", "1.10.rc2"
|
||||
G
|
||||
|
||||
bundle "install --jobs 1", :raise_on_error => false
|
||||
|
||||
expect(err).not_to include("ERROR REPORT TEMPLATE")
|
||||
expect(err).to include("Could not find compatible versions")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user