[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?
|
if locked_specs.empty?
|
||||||
@missing_lockfile_dep = name if dep_changed == false
|
@missing_lockfile_dep = name if dep_changed == false
|
||||||
elsif !dep.matches_spec?(locked_specs.first)
|
else
|
||||||
@gems_to_unlock << name
|
if locked_specs.map(&:source).uniq.size > 1
|
||||||
dep_changed = true
|
@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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1908,6 +1908,63 @@ RSpec.describe "the lockfile format" do
|
|||||||
L
|
L
|
||||||
end
|
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
|
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"
|
git = build_git "foo"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user