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"  | 
