summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2021-12-26 14:42:02 +0100
committergit <svn-admin@ruby-lang.org>2021-12-28 04:38:31 +0900
commit95d2e06c2b465545c8166e5a5edb582ff1d9bcbe (patch)
tree2f1708784cdabc20bbd49ddd5fca9656d43b0200
parentbe476f38f9a467a25b81dabe42ca120924527395 (diff)
[rubygems/rubygems] Fix `bundle update --bundler` no longer updating lockfile
https://github.com/rubygems/rubygems/commit/a053b7e4d4
-rw-r--r--lib/bundler/self_manager.rb7
-rw-r--r--spec/bundler/commands/update_spec.rb35
2 files changed, 41 insertions, 1 deletions
diff --git a/lib/bundler/self_manager.rb b/lib/bundler/self_manager.rb
index 2169d814e5..024b2bfbf2 100644
--- a/lib/bundler/self_manager.rb
+++ b/lib/bundler/self_manager.rb
@@ -69,7 +69,12 @@ module Bundler
SharedHelpers.in_bundle? &&
lockfile_version &&
!lockfile_version.end_with?(".dev") &&
- lockfile_version != current_version
+ lockfile_version != current_version &&
+ !updating?
+ end
+
+ def updating?
+ "update".start_with?(ARGV.first || " ") && ARGV[1..-1].any? {|a| a.start_with?("--bundler") }
end
def installed?
diff --git a/spec/bundler/commands/update_spec.rb b/spec/bundler/commands/update_spec.rb
index 42cb0f3157..3878c47799 100644
--- a/spec/bundler/commands/update_spec.rb
+++ b/spec/bundler/commands/update_spec.rb
@@ -1130,6 +1130,41 @@ RSpec.describe "bundle update --bundler" do
expect(the_bundle.locked_gems.bundler_version).to eq v(Bundler::VERSION)
end
+
+ it "updates the bundler version in the lockfile without re-resolving if the locked version is already installed" do
+ system_gems "bundler-2.3.3"
+
+ build_repo4 do
+ build_gem "rack", "1.0"
+ end
+
+ install_gemfile <<-G
+ source "#{file_uri_for(gem_repo4)}"
+ gem "rack"
+ G
+ lockfile lockfile.sub(/(^\s*)#{Bundler::VERSION}($)/, "2.3.3")
+
+ bundle :update, :bundler => true, :artifice => "vcr", :verbose => true
+ expect(out).to include("Using bundler #{Bundler::VERSION}")
+
+ expect(lockfile).to eq <<~L
+ GEM
+ remote: #{file_uri_for(gem_repo4)}/
+ specs:
+ rack (1.0)
+
+ PLATFORMS
+ #{lockfile_platforms}
+
+ DEPENDENCIES
+ rack
+
+ BUNDLED WITH
+ #{Bundler::VERSION}
+ L
+
+ expect(the_bundle).to include_gem "rack 1.0"
+ end
end
# these specs are slow and focus on integration and therefore are not exhaustive. unit specs elsewhere handle that.