summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/bundler/self_manager.rb8
-rw-r--r--spec/bundler/runtime/self_management_spec.rb11
2 files changed, 15 insertions, 4 deletions
diff --git a/lib/bundler/self_manager.rb b/lib/bundler/self_manager.rb
index ea7c014f3c..a6d93f20ff 100644
--- a/lib/bundler/self_manager.rb
+++ b/lib/bundler/self_manager.rb
@@ -98,10 +98,10 @@ module Bundler
def needs_switching?
autoswitching_applies? &&
- released?(lockfile_version) &&
- !running?(lockfile_version) &&
- !updating? &&
- Bundler.settings[:version] != "system"
+ Bundler.settings[:version] != "system" &&
+ released?(restart_version) &&
+ !running?(restart_version) &&
+ !updating?
end
def autoswitching_applies?
diff --git a/spec/bundler/runtime/self_management_spec.rb b/spec/bundler/runtime/self_management_spec.rb
index 320b7062e8..c6910e95c0 100644
--- a/spec/bundler/runtime/self_management_spec.rb
+++ b/spec/bundler/runtime/self_management_spec.rb
@@ -176,6 +176,17 @@ RSpec.describe "Self management", rubygems: ">= 3.3.0.dev" do
expect(out).to eq(Bundler::VERSION[0] == "2" ? "Bundler version #{Bundler::VERSION}" : Bundler::VERSION)
end
+ it "does not try to install when using bundle config version <dev-version>" do
+ lockfile_bundled_with(previous_minor)
+
+ bundle "config set version #{previous_minor}.dev"
+ bundle "install"
+ expect(out).not_to match(/restarting using that version/)
+
+ bundle "-v"
+ expect(out).to eq(Bundler::VERSION[0] == "2" ? "Bundler version #{Bundler::VERSION}" : Bundler::VERSION)
+ end
+
it "ignores malformed lockfile version" do
lockfile_bundled_with("2.3.")