aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/cmd/test.rb')
-rw-r--r--Library/Homebrew/cmd/test.rb31
1 files changed, 19 insertions, 12 deletions
diff --git a/Library/Homebrew/cmd/test.rb b/Library/Homebrew/cmd/test.rb
index 0983c0b81..c4f322b60 100644
--- a/Library/Homebrew/cmd/test.rb
+++ b/Library/Homebrew/cmd/test.rb
@@ -1,17 +1,12 @@
require "extend/ENV"
-require "timeout"
-require "debrew"
require "formula_assertions"
+require "sandbox"
module Homebrew
- TEST_TIMEOUT_SECONDS = 5*60
def test
raise FormulaUnspecifiedError if ARGV.named.empty?
- ENV.extend(Stdenv)
- ENV.setup_build_environment
-
ARGV.formulae.each do |f|
# Cannot test uninstalled formulae
unless f.installed?
@@ -27,15 +22,27 @@ module Homebrew
puts "Testing #{f.name}"
- f.extend(Assertions)
- f.extend(Debrew::Formula) if ARGV.debug?
-
env = ENV.to_hash
begin
- # tests can also return false to indicate failure
- Timeout::timeout TEST_TIMEOUT_SECONDS do
- raise "test returned false" if f.run_test == false
+ args = %W[
+ #{RUBY_PATH}
+ -W0
+ -I #{HOMEBREW_LIBRARY_PATH}
+ --
+ #{HOMEBREW_LIBRARY_PATH}/test.rb
+ #{f.path}
+ ].concat(ARGV.options_only)
+
+ Utils.safe_fork do
+ if Sandbox.available? && ARGV.sandbox?
+ sandbox = Sandbox.new
+ sandbox.allow_write_temp_and_cache
+ sandbox.allow_write_log(f)
+ sandbox.exec(*args)
+ else
+ exec(*args)
+ end
end
rescue Assertions::FailedAssertion => e
ofail "#{f.name}: failed"