diff options
| -rw-r--r-- | lib/bundler/self_manager.rb | 8 | ||||
| -rw-r--r-- | spec/bundler/runtime/self_management_spec.rb | 11 |
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.") |
