[rubygems/rubygems] Remove specs with bad sources when converging dependencies
https://github.com/rubygems/rubygems/commit/a0f7851451
This commit is contained in:
parent
fd43aca13b
commit
1427629a5f
@ -955,9 +955,15 @@ module Bundler
|
||||
|
||||
if locked_specs.empty?
|
||||
@missing_lockfile_dep = name if dep_changed == false
|
||||
elsif !dep.matches_spec?(locked_specs.first)
|
||||
@gems_to_unlock << name
|
||||
dep_changed = true
|
||||
else
|
||||
if locked_specs.map(&:source).uniq.size > 1
|
||||
@locked_specs.delete(locked_specs.select {|s| s.source != dep.source })
|
||||
end
|
||||
|
||||
unless dep.matches_spec?(locked_specs.first)
|
||||
@gems_to_unlock << name
|
||||
dep_changed = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1908,6 +1908,63 @@ RSpec.describe "the lockfile format" do
|
||||
L
|
||||
end
|
||||
|
||||
it "automatically fixes the lockfile when it includes a gem under the correct GIT section, but also under an incorrect GEM section, with a higher version, and with no explicit Gemfile requirement" do
|
||||
git = build_git "foo"
|
||||
|
||||
gemfile <<~G
|
||||
source "https://gem.repo1/"
|
||||
gem "foo", git: "#{lib_path("foo-1.0")}"
|
||||
G
|
||||
|
||||
# If the lockfile erroneously lists platform versions of the gem
|
||||
# that don't match the locked version of the git repo we should remove them.
|
||||
|
||||
lockfile <<~L
|
||||
GIT
|
||||
remote: #{lib_path("foo-1.0")}
|
||||
revision: #{git.ref_for("main")}
|
||||
specs:
|
||||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: https://gem.repo1/
|
||||
specs:
|
||||
foo (1.1-x86_64-linux-gnu)
|
||||
|
||||
PLATFORMS
|
||||
#{lockfile_platforms}
|
||||
|
||||
DEPENDENCIES
|
||||
foo!
|
||||
|
||||
BUNDLED WITH
|
||||
#{Bundler::VERSION}
|
||||
L
|
||||
|
||||
bundle "install"
|
||||
|
||||
expect(lockfile).to eq <<~L
|
||||
GIT
|
||||
remote: #{lib_path("foo-1.0")}
|
||||
revision: #{git.ref_for("main")}
|
||||
specs:
|
||||
foo (1.0)
|
||||
|
||||
GEM
|
||||
remote: https://gem.repo1/
|
||||
specs:
|
||||
|
||||
PLATFORMS
|
||||
#{lockfile_platforms}
|
||||
|
||||
DEPENDENCIES
|
||||
foo!
|
||||
|
||||
BUNDLED WITH
|
||||
#{Bundler::VERSION}
|
||||
L
|
||||
end
|
||||
|
||||
it "automatically fixes the lockfile when it includes a gem under the correct GIT section, but also under an incorrect GEM section, with a higher version" do
|
||||
git = build_git "foo"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user