diff options
author | David RodrÃguez <[email protected]> | 2021-08-18 11:02:13 +0200 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2021-08-31 19:06:14 +0900 |
commit | f6803d2411de002c00f1bacc756e412407bc61ed (patch) | |
tree | 1b843bb7a87202202f3abf671aeaf5af02004718 | |
parent | e70419d608019a95135947d66a1603a24e3ced6d (diff) |
[rubygems/rubygems] Fix `bundle check` showing duplicated gems
If the lockfile contains multiple platforms, `bundle check` would show
duplicated missing gems.
https://github.com/rubygems/rubygems/commit/6ac5931783
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/4789
-rw-r--r-- | lib/bundler/spec_set.rb | 2 | ||||
-rw-r--r-- | spec/bundler/commands/check_spec.rb | 36 |
2 files changed, 37 insertions, 1 deletions
diff --git a/lib/bundler/spec_set.rb b/lib/bundler/spec_set.rb index 7be4fcca87..26d41cb9b8 100644 --- a/lib/bundler/spec_set.rb +++ b/lib/bundler/spec_set.rb @@ -24,7 +24,7 @@ module Bundler specs_for_dep = spec_for_dependency(dep, match_current_platform) if specs_for_dep.any? - specs += specs_for_dep + match_current_platform ? specs += specs_for_dep : specs |= specs_for_dep specs_for_dep.first.dependencies.each do |d| next if d.type == :development diff --git a/spec/bundler/commands/check_spec.rb b/spec/bundler/commands/check_spec.rb index 7eb3fec2e5..419deae19b 100644 --- a/spec/bundler/commands/check_spec.rb +++ b/spec/bundler/commands/check_spec.rb @@ -332,6 +332,42 @@ RSpec.describe "bundle check" do end end + describe "when locked under multiple platforms" do + before :each do + build_repo4 do + build_gem "rack" + end + + gemfile <<-G + source "#{file_uri_for(gem_repo4)}" + gem "rack" + G + + lockfile <<-L + GEM + remote: #{file_uri_for(gem_repo4)}/ + specs: + rack (1.0) + + PLATFORMS + ruby + #{specific_local_platform} + + DEPENDENCIES + rack + + BUNDLED WITH + #{Bundler::VERSION} + L + end + + it "shows what is missing with the current Gemfile without duplications" do + bundle :check, :raise_on_error => false + expect(err).to match(/The following gems are missing/) + expect(err).to include("* rack (1.0").once + end + end + describe "when using only scoped rubygems sources" do before do gemfile <<~G |