diff options
author | David RodrÃguez <[email protected]> | 2025-05-29 20:49:29 +0200 |
---|---|---|
committer | Hiroshi SHIBATA <[email protected]> | 2025-06-05 19:12:45 +0900 |
commit | e4933e1d93218ff740ea6ac552b309eca03ba5d1 (patch) | |
tree | d7c1d06e969f9856f713971ed50369f943c4f8e7 | |
parent | 5cf07c1e8fa32ff4619c02b1762b5b7bb074ad71 (diff) |
[rubygems/rubygems] Fix `bundle update --bundler` when restarts disabled
There's no reason why we should not update bundler as requested, even if
restarts are disabled.
https://github.com/rubygems/rubygems/commit/e59acd2a0d
-rw-r--r-- | lib/bundler/self_manager.rb | 11 | ||||
-rw-r--r-- | spec/bundler/commands/update_spec.rb | 18 |
2 files changed, 20 insertions, 9 deletions
diff --git a/lib/bundler/self_manager.rb b/lib/bundler/self_manager.rb index 53eb2c1859..72bcb264ab 100644 --- a/lib/bundler/self_manager.rb +++ b/lib/bundler/self_manager.rb @@ -31,8 +31,6 @@ module Bundler end def update_bundler_and_restart_with_it_if_needed(target) - return unless autoswitching_applies? - spec = resolve_update_version_from(target) return unless spec @@ -40,7 +38,7 @@ module Bundler Bundler.ui.info "Updating bundler to #{version}." - install(spec) + install(spec) unless installed?(version) restart_with(version) end @@ -102,8 +100,7 @@ module Bundler def needs_switching?(restart_version) autoswitching_applies? && released?(restart_version) && - !running?(restart_version) && - !updating? + !running?(restart_version) end def autoswitching_applies? @@ -172,10 +169,6 @@ module Bundler $PROGRAM_NAME != "-e" end - def updating? - "update".start_with?(ARGV.first || " ") && ARGV[1..-1].any? {|a| a.start_with?("--bundler") } - end - def installed?(restart_version) Bundler.configure diff --git a/spec/bundler/commands/update_spec.rb b/spec/bundler/commands/update_spec.rb index faf9db32d4..d4fdc56037 100644 --- a/spec/bundler/commands/update_spec.rb +++ b/spec/bundler/commands/update_spec.rb @@ -1684,6 +1684,24 @@ RSpec.describe "bundle update --bundler" do expect(err).to eq("The `bundle update --bundler` target version (999.999.999) does not exist") end + it "errors if the explicit target version does not exist, even if auto switching is disabled" do + pristine_system_gems "bundler-9.9.9" + + build_repo4 do + build_gem "myrack", "1.0" + end + + install_gemfile <<-G + source "https://gem.repo4" + gem "myrack" + G + + bundle :update, bundler: "999.999.999", raise_on_error: false, env: { "BUNDLER_VERSION" => "9.9.9" } + + expect(last_command).to be_failure + expect(err).to eq("The `bundle update --bundler` target version (999.999.999) does not exist") + end + it "allows updating to development versions if already installed locally" do system_gems "bundler-9.9.9" |