From 432285c0040d547c24294611725edddb78560ac2 Mon Sep 17 00:00:00 2001 From: MSP-Greg Date: Sat, 13 Jul 2019 08:20:12 -0500 Subject: [PATCH] [bundler/bundler] fix nested bundle exec's when bundler is a default gem https://github.com/bundler/bundler/commit/537c0ab712 --- lib/bundler/shared_helpers.rb | 10 ++++++++-- spec/bundler/bundler/shared_helpers_spec.rb | 6 ++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/bundler/shared_helpers.rb b/lib/bundler/shared_helpers.rb index c5fa659a7b..85b92cf010 100644 --- a/lib/bundler/shared_helpers.rb +++ b/lib/bundler/shared_helpers.rb @@ -286,9 +286,15 @@ module Bundler 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/bundler/shared_helpers_spec.rb b/spec/bundler/bundler/shared_helpers_spec.rb index 3b30a1f49f..c6e3487494 100644 --- a/spec/bundler/bundler/shared_helpers_spec.rb +++ b/spec/bundler/bundler/shared_helpers_spec.rb @@ -402,8 +402,10 @@ RSpec.describe Bundler::SharedHelpers do 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