diff options
| author | Jack Nagel | 2014-09-18 14:16:07 -0500 | 
|---|---|---|
| committer | Jack Nagel | 2014-09-18 14:16:07 -0500 | 
| commit | 36d53fcbb7abec1eb3ab903fbbb4a7c54d12cf1e (patch) | |
| tree | 7638a90744f7d1c2ebe47b45828f1af8dc12c7f0 | |
| parent | 350a85d9f588e94257399a830c8ae51f704c434f (diff) | |
| download | homebrew-36d53fcbb7abec1eb3ab903fbbb4a7c54d12cf1e.tar.bz2 | |
Implement `brew test --debug`
| -rw-r--r-- | Library/Contributions/manpages/brew.1.md | 12 | ||||
| -rw-r--r-- | Library/Homebrew/cmd/test.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/debrew.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/formula.rb | 15 | ||||
| -rw-r--r-- | share/man/man1/brew.1 | 11 | 
5 files changed, 29 insertions, 17 deletions
| diff --git a/Library/Contributions/manpages/brew.1.md b/Library/Contributions/manpages/brew.1.md index 38b864409..533fbfa01 100644 --- a/Library/Contributions/manpages/brew.1.md +++ b/Library/Contributions/manpages/brew.1.md @@ -179,8 +179,7 @@ Note that these flags should only appear after a command.      several different ways. See [SPECIFYING FORMULAE][].      If `--debug` is passed and brewing fails, open an interactive debugging -    session with access to IRB, ruby-debug, or a shell inside the temporary -    build directory. +    session with access to IRB or a shell inside the temporary build directory.      If `--env=std` is passed, use the standard build environment instead of superenv. @@ -332,14 +331,17 @@ Note that these flags should only appear after a command.      Ensures all tapped formula are symlinked into Library/Formula and prunes dead      formula from Library/Formula. -  * `test` [--devel|--HEAD] <formula>: +  * `test` [--devel|--HEAD] [--debug] <formula>:      A few formulae provide a test method. `brew test <formula>` runs this      test method. There is no standard output or return code, but it should      generally indicate to the user if something is wrong with the installed      formula. -    To test the development or head version of a formula, `--devel` or -    `--HEAD` must be passed., +    To test the development or head version of a formula, use `--devel` or +    `--HEAD`. + +    If `--debug` is passed and the test fails, an interactive debugger will be +    launched with access to IRB or a shell inside the temporary test directory.      Example: `brew install jruby && brew test jruby` diff --git a/Library/Homebrew/cmd/test.rb b/Library/Homebrew/cmd/test.rb index b47a85ed4..630450744 100644 --- a/Library/Homebrew/cmd/test.rb +++ b/Library/Homebrew/cmd/test.rb @@ -1,5 +1,6 @@  require "extend/ENV"  require "timeout" +require "debrew"  module Homebrew    TEST_TIMEOUT_SECONDS = 5*60 @@ -50,11 +51,12 @@ module Homebrew        f.extend(Test::Unit::Assertions)        f.extend(Homebrew::Assertions) +      f.extend(Debrew::Formula) if ARGV.debug?        begin          # tests can also return false to indicate failure          Timeout::timeout TEST_TIMEOUT_SECONDS do -          raise if f.test == false +          raise if f.run_test == false          end        rescue FailedAssertion => e          ofail "#{f.name}: failed" diff --git a/Library/Homebrew/debrew.rb b/Library/Homebrew/debrew.rb index fbddadbd5..f3d3dffa3 100644 --- a/Library/Homebrew/debrew.rb +++ b/Library/Homebrew/debrew.rb @@ -21,6 +21,10 @@ module Debrew      def install        Debrew.debrew { super }      end + +    def test +      Debrew.debrew { super } +    end    end    module Resource diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 23087ada6..261d3c5a0 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -473,21 +473,23 @@ class Formula      active_spec.verify_download_integrity(fn)    end -  def test +  def run_test      self.build = Tab.for_formula(self) -    ret = nil      mktemp do        @testpath = Pathname.pwd -      ret = instance_eval(&self.class.test) -      @testpath = nil +      test      end -    ret +  ensure +    @testpath = nil    end    def test_defined?      false    end +  def test +  end +    protected    # Pretty titles the command and buffers stdout/stderr @@ -769,9 +771,8 @@ class Formula      end      def test &block -      return @test unless block_given?        define_method(:test_defined?) { true } -      @test = block +      define_method(:test, &block)      end    end  end diff --git a/share/man/man1/brew.1 b/share/man/man1/brew.1 index e13b97013..d432311f7 100644 --- a/share/man/man1/brew.1 +++ b/share/man/man1/brew.1 @@ -1,7 +1,7 @@  .\" generated with Ronn/v0.7.3  .\" http://github.com/rtomayko/ronn/tree/0.7.3  . -.TH "BREW" "1" "July 2014" "Homebrew" "brew" +.TH "BREW" "1" "September 2014" "Homebrew" "brew"  .  .SH "NAME"  \fBbrew\fR \- The missing package manager for OS X @@ -197,7 +197,7 @@ Install \fIformula\fR\.  \fIformula\fR is usually the name of the formula to install, but it can be specified several different ways\. See \fISPECIFYING FORMULAE\fR\.  .  .IP -If \fB\-\-debug\fR is passed and brewing fails, open an interactive debugging session with access to IRB, ruby\-debug, or a shell inside the temporary build directory\. +If \fB\-\-debug\fR is passed and brewing fails, open an interactive debugging session with access to IRB or a shell inside the temporary build directory\.  .  .IP  If \fB\-\-env=std\fR is passed, use the standard build environment instead of superenv\. @@ -353,11 +353,14 @@ Tap a new formula repository from GitHub, or list existing taps\.  Ensures all tapped formula are symlinked into Library/Formula and prunes dead formula from Library/Formula\.  .  .TP -\fBtest\fR [\-\-devel|\-\-HEAD] \fIformula\fR +\fBtest\fR [\-\-devel|\-\-HEAD] [\-\-debug] \fIformula\fR  A few formulae provide a test method\. \fBbrew test <formula>\fR runs this test method\. There is no standard output or return code, but it should generally indicate to the user if something is wrong with the installed formula\.  .  .IP -To test the development or head version of a formula, \fB\-\-devel\fR or \fB\-\-HEAD\fR must be passed\., +To test the development or head version of a formula, use \fB\-\-devel\fR or \fB\-\-HEAD\fR\. +. +.IP +If \fB\-\-debug\fR is passed and the test fails, an interactive debugger will be launched with access to IRB or a shell inside the temporary test directory\.  .  .IP  Example: \fBbrew install jruby && brew test jruby\fR | 
