summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <[email protected]>2025-05-29 20:49:29 +0200
committerHiroshi SHIBATA <[email protected]>2025-06-05 19:12:45 +0900
commite4933e1d93218ff740ea6ac552b309eca03ba5d1 (patch)
treed7c1d06e969f9856f713971ed50369f943c4f8e7
parent5cf07c1e8fa32ff4619c02b1762b5b7bb074ad71 (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.rb11
-rw-r--r--spec/bundler/commands/update_spec.rb18
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"