From 769a6cd1f5631624aa934eaa0c9b3b2d66d85180 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Wed, 10 Mar 2021 04:46:39 +0000 Subject: [PATCH] Don't touch PATH, GEM_HOME and GEM_PATH when testing formula --- Library/Homebrew/dev-cmd/test.rb | 2 +- Library/Homebrew/utils/gems.rb | 13 ++++++++++++- Library/Homebrew/utils/gems.rbi | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Library/Homebrew/dev-cmd/test.rb b/Library/Homebrew/dev-cmd/test.rb index a18e6472049b1..ccf5922536a95 100644 --- a/Library/Homebrew/dev-cmd/test.rb +++ b/Library/Homebrew/dev-cmd/test.rb @@ -35,7 +35,7 @@ def test_args def test args = test_args.parse - Homebrew.install_bundler_gems! + Homebrew.install_bundler_gems!(setup_path: false) require "formula_assertions" require "formula_free_port" diff --git a/Library/Homebrew/utils/gems.rb b/Library/Homebrew/utils/gems.rb index 90b296b5a1f64..e607da5422d2d 100644 --- a/Library/Homebrew/utils/gems.rb +++ b/Library/Homebrew/utils/gems.rb @@ -125,7 +125,11 @@ def install_bundler! ) end - def install_bundler_gems!(only_warn_on_failure: false) + def install_bundler_gems!(only_warn_on_failure: false, setup_path: true) + old_path = ENV["PATH"] + old_gem_path = ENV["GEM_PATH"] + old_gem_home = ENV["GEM_HOME"] + install_bundler! ENV["BUNDLE_GEMFILE"] = File.join(ENV.fetch("HOMEBREW_LIBRARY"), "Homebrew", "Gemfile") @@ -152,5 +156,12 @@ def install_bundler_gems!(only_warn_on_failure: false) end setup_gem_environment! + ensure + unless setup_path + # Reset the paths. We need to have at least temporarily changed them while invoking `bundle`. + ENV["PATH"] = old_path + ENV["GEM_PATH"] = old_gem_path + ENV["GEM_HOME"] = old_gem_home + end end end diff --git a/Library/Homebrew/utils/gems.rbi b/Library/Homebrew/utils/gems.rbi index 0aad66513887a..55bdcc1114cd9 100644 --- a/Library/Homebrew/utils/gems.rbi +++ b/Library/Homebrew/utils/gems.rbi @@ -22,6 +22,6 @@ module Homebrew sig { void } def install_bundler!; end - sig { params(only_warn_on_failure: T::Boolean).void } - def install_bundler_gems!(only_warn_on_failure: false); end + sig { params(only_warn_on_failure: T::Boolean, setup_path: T::Boolean).void } + def install_bundler_gems!(only_warn_on_failure: false, setup_path: false); end end