summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2021-12-08 18:36:13 +0100
committergit <svn-admin@ruby-lang.org>2021-12-10 19:09:55 +0900
commit0e60bc118b66d626d7e1f985dbd15cfba5e62715 (patch)
tree9d11647d9b5b738aa7ea4a375d3aeeed61da0055
parent30268d1de697de4b87ab6c655c4dc244be036900 (diff)
[rubygems/rubygems] Ignore dependencies not actually locked from frozen check
Only needed if there can be no explicit global source (bundler < 3). https://github.com/rubygems/rubygems/commit/73923f4af5
-rw-r--r--lib/bundler/definition.rb7
-rw-r--r--spec/bundler/install/deploy_spec.rb11
2 files changed, 17 insertions, 1 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index c2a8e2ba42..84f0367ac7 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -379,7 +379,12 @@ module Bundler
both_sources = Hash.new {|h, k| h[k] = [] }
@dependencies.each {|d| both_sources[d.name][0] = d }
- locked_dependencies.each {|d| both_sources[d.name][1] = d }
+
+ locked_dependencies.each do |d|
+ next if !Bundler.feature_flag.bundler_3_mode? && @locked_specs[d.name].empty?
+
+ both_sources[d.name][1] = d
+ end
both_sources.each do |name, (dep, lock_dep)|
next if dep.nil? || lock_dep.nil?
diff --git a/spec/bundler/install/deploy_spec.rb b/spec/bundler/install/deploy_spec.rb
index 54fc6371cb..3bcb6a703e 100644
--- a/spec/bundler/install/deploy_spec.rb
+++ b/spec/bundler/install/deploy_spec.rb
@@ -258,6 +258,17 @@ RSpec.describe "install in deployment or frozen mode" do
expect(out).to eq("WIN")
end
+ it "works if a gem is missing, but it's on a different platform, and the Gemfile has no global source", :bundler => "< 3" do
+ install_gemfile <<-G
+ source "#{file_uri_for(gem_repo1)}" do
+ gem "rake", platform: :#{not_local_tag}
+ end
+ G
+
+ bundle :install, :env => { "BUNDLE_FROZEN" => "true" }
+ expect(last_command).to be_success
+ end
+
it "explodes if a path gem is missing" do
build_lib "path_gem"
install_gemfile <<-G