aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test.rb
diff options
context:
space:
mode:
authorXu Cheng2015-04-13 18:05:41 +0800
committerXu Cheng2015-04-15 19:51:54 +0800
commitb621edf89dba704f7165fff0f0311f9e0c05bc34 (patch)
treec26a1c8c83c0ca205a97d81a2f2fa2dc14ef7240 /Library/Homebrew/test.rb
parenta6be0b5bb8312e25695bd71bfe5e799526b4290e (diff)
downloadbrew-b621edf89dba704f7165fff0f0311f9e0c05bc34.tar.bz2
sandbox test
Diffstat (limited to 'Library/Homebrew/test.rb')
-rw-r--r--Library/Homebrew/test.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/Library/Homebrew/test.rb b/Library/Homebrew/test.rb
new file mode 100644
index 000000000..163abe93a
--- /dev/null
+++ b/Library/Homebrew/test.rb
@@ -0,0 +1,34 @@
+old_trap = trap("INT") { exit! 130 }
+
+require "global"
+require "extend/ENV"
+require "timeout"
+require "debrew"
+require "formula_assertions"
+require "fcntl"
+require "socket"
+
+TEST_TIMEOUT_SECONDS = 5*60
+
+begin
+ error_pipe = UNIXSocket.open(ENV["HOMEBREW_ERROR_PIPE"], &:recv_io)
+ error_pipe.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC)
+
+ ENV.extend(Stdenv)
+ ENV.setup_build_environment
+
+ trap("INT", old_trap)
+
+ formula = ARGV.formulae.first
+ formula.extend(Homebrew::Assertions)
+ formula.extend(Debrew::Formula) if ARGV.debug?
+
+ # tests can also return false to indicate failure
+ Timeout::timeout TEST_TIMEOUT_SECONDS do
+ raise "test returned false" if formula.run_test == false
+ end
+rescue Exception => e
+ Marshal.dump(e, error_pipe)
+ error_pipe.close
+ exit! 1
+end