diff --git a/Library/Homebrew/dev-cmd/tests.rb b/Library/Homebrew/dev-cmd/tests.rb index a6f54d9d60..1da41139bc 100644 --- a/Library/Homebrew/dev-cmd/tests.rb +++ b/Library/Homebrew/dev-cmd/tests.rb @@ -42,7 +42,6 @@ module Homebrew args = tests_args.parse Homebrew.install_bundler_gems! - gem_user_dir = Gem.user_dir require "byebug" if args.byebug? @@ -138,6 +137,9 @@ module Homebrew puts "Randomized with seed #{seed}" + # Let tests find `bundle` in the actual location. + ENV["HOMEBREW_TESTS_GEM_USER_DIR"] = gem_user_dir + # Let `bundle` in PATH find its gem. ENV["GEM_PATH"] = "#{ENV["GEM_PATH"]}:#{gem_user_dir}" diff --git a/Library/Homebrew/utils/gems.rb b/Library/Homebrew/utils/gems.rb index eb3a5f073a..a75f0b8561 100644 --- a/Library/Homebrew/utils/gems.rb +++ b/Library/Homebrew/utils/gems.rb @@ -17,9 +17,13 @@ module Homebrew "#{RbConfig::CONFIG["prefix"]}/bin" end + def gem_user_dir + ENV["HOMEBREW_TESTS_GEM_USER_DIR"] || Gem.user_dir + end + def gem_user_bindir require "rubygems" - "#{Gem.user_dir}/bin" + "#{gem_user_dir}/bin" end def ohai_if_defined(message) @@ -55,7 +59,7 @@ module Homebrew Gem.clear_paths Gem::Specification.reset - # Add necessary Ruby and Gem binary directories to PATH. + # Add necessary Ruby and Gem binary directories to `PATH`. gem_bindir ||= Gem.bindir paths = ENV.fetch("PATH").split(":") paths.unshift(gem_bindir) unless paths.include?(gem_bindir) @@ -92,7 +96,7 @@ module Homebrew def install_bundler! require "rubygems" - setup_gem_environment!(gem_home: Gem.user_dir, gem_bindir: gem_user_bindir) + setup_gem_environment!(gem_home: gem_user_dir, gem_bindir: gem_user_bindir) install_gem_setup_path!( "bundler", version: HOMEBREW_BUNDLER_VERSION,