diff --git a/lib/bundler/shared_helpers.rb b/lib/bundler/shared_helpers.rb index 5eed3151b39..80398fa372a 100644 --- a/lib/bundler/shared_helpers.rb +++ b/lib/bundler/shared_helpers.rb @@ -285,9 +285,15 @@ def set_env(key, value) public :set_env def set_bundle_variables + # bundler exe & lib folders have same root folder, typical gem installation exe_file = File.expand_path("../../../exe/bundle", __FILE__) - # for Ruby core repository - exe_file = File.expand_path("../../../../bin/bundle", __FILE__) unless File.exist?(exe_file) + + # for Ruby core repository testing + exe_file = File.expand_path("../../../bin/bundle", __FILE__) unless File.exist?(exe_file) + + # bundler is a default gem, exe path is separate + exe_file = Bundler.rubygems.bin_path("bundler", "bundle", VERSION) unless File.exist?(exe_file) + Bundler::SharedHelpers.set_env "BUNDLE_BIN_PATH", exe_file Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", find_gemfile.to_s Bundler::SharedHelpers.set_env "BUNDLER_VERSION", Bundler::VERSION diff --git a/spec/bundler/shared_helpers_spec.rb b/spec/bundler/shared_helpers_spec.rb index 3b30a1f49fc..c6e3487494d 100644 --- a/spec/bundler/shared_helpers_spec.rb +++ b/spec/bundler/shared_helpers_spec.rb @@ -402,8 +402,10 @@ it "sets BUNDLE_BIN_PATH to the bundle executable file" do subject.set_bundle_environment - bundle_exe = ruby_core? ? "../../../../../bin/bundle" : "../../../exe/bundle" - expect(ENV["BUNDLE_BIN_PATH"]).to eq(File.expand_path(bundle_exe, __FILE__)) + bundle_exe = ruby_core? ? "../../../bin/bundle" : "../../../exe/bundle" + bin_path = ENV["BUNDLE_BIN_PATH"] + expect(bin_path).to eq(File.expand_path(bundle_exe, __FILE__)) + expect(File.exist?(bin_path)).to be true end end