aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/test.rb
diff options
context:
space:
mode:
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