diff options
Diffstat (limited to 'Library/Homebrew/cmd/test.rb')
| -rw-r--r-- | Library/Homebrew/cmd/test.rb | 31 |
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" |
