diff --git a/lib/rubygems/bundler_version_finder.rb b/lib/rubygems/bundler_version_finder.rb index c2d6f4106c52..bbe7bf0ab55e 100644 --- a/lib/rubygems/bundler_version_finder.rb +++ b/lib/rubygems/bundler_version_finder.rb @@ -2,7 +2,8 @@ module Gem::BundlerVersionFinder def self.bundler_version - return if bundle_config_version == "system" + bcv = bundle_config_version + return if bcv == "system" v = ENV["BUNDLER_VERSION"] v = nil if v&.empty? @@ -10,7 +11,7 @@ def self.bundler_version v ||= bundle_update_bundler_version return if v == true - v ||= bundle_config_version + v ||= bcv unless bcv == "lockfile" v ||= lockfile_version return unless v diff --git a/test/rubygems/test_gem_bundler_version_finder.rb b/test/rubygems/test_gem_bundler_version_finder.rb index be8c5914f48e..b5ef6293abfd 100644 --- a/test/rubygems/test_gem_bundler_version_finder.rb +++ b/test/rubygems/test_gem_bundler_version_finder.rb @@ -146,6 +146,31 @@ def test_bundler_version_with_empty_bundle_version_env end end + def test_bundler_version_with_bundle_version_env_lockfile + ENV["BUNDLE_VERSION"] = "lockfile" + + bvf.stub(:lockfile_contents, "\n\nBUNDLED WITH\n 1.1.1.1\n") do + assert_equal v("1.1.1.1"), bvf.bundler_version + end + end + + def test_bundler_version_with_bundle_config_version_lockfile + config_content = <<~CONFIG + BUNDLE_VERSION: "lockfile" + CONFIG + + Tempfile.create("bundle_config") do |f| + f.write(config_content) + f.flush + + bvf.stub(:bundler_global_config_file, f.path) do + bvf.stub(:lockfile_contents, "\n\nBUNDLED WITH\n 1.1.1.1\n") do + assert_equal v("1.1.1.1"), bvf.bundler_version + end + end + end + end + def test_bundler_version_with_bundle_config_non_existent_file bvf.stub(:bundler_global_config_file, "/non/existent/path") do assert_nil bvf.bundler_version