diff options
Diffstat (limited to 'spec/mspec/lib/mspec/runner')
-rw-r--r-- | spec/mspec/lib/mspec/runner/exception.rb | 2 | ||||
-rw-r--r-- | spec/mspec/lib/mspec/runner/formatters/base.rb | 18 | ||||
-rw-r--r-- | spec/mspec/lib/mspec/runner/mspec.rb | 2 |
3 files changed, 15 insertions, 7 deletions
diff --git a/spec/mspec/lib/mspec/runner/exception.rb b/spec/mspec/lib/mspec/runner/exception.rb index e07f02f684..23375733e6 100644 --- a/spec/mspec/lib/mspec/runner/exception.rb +++ b/spec/mspec/lib/mspec/runner/exception.rb @@ -29,7 +29,7 @@ class ExceptionState if @failure message - elsif raise_error_message = @exception.instance_variable_get(:@mspec_raise_error_message) + elsif raise_error_message = RaiseErrorMatcher::FAILURE_MESSAGE_FOR_EXCEPTION[@exception] raise_error_message.join("\n") else "#{@exception.class}: #{message}" diff --git a/spec/mspec/lib/mspec/runner/formatters/base.rb b/spec/mspec/lib/mspec/runner/formatters/base.rb index 6c075c4d0a..c7c50c40d8 100644 --- a/spec/mspec/lib/mspec/runner/formatters/base.rb +++ b/spec/mspec/lib/mspec/runner/formatters/base.rb @@ -1,6 +1,7 @@ require 'mspec/expectations/expectations' require 'mspec/runner/actions/timer' require 'mspec/runner/actions/tally' +require 'mspec/utils/options' if ENV['CHECK_LEAKS'] require 'mspec/runner/actions/leakchecker' @@ -18,10 +19,17 @@ class BaseFormatter @count = 0 # For subclasses - if out.nil? + if out + @out = File.open out, "w" + else @out = $stdout + end + + err = MSpecOptions.latest && MSpecOptions.latest.config[:error_output] + if err + @err = (err == 'stderr') ? $stderr : File.open(err, "w") else - @out = File.open out, "w" + @err = @out end end @@ -115,9 +123,9 @@ class BaseFormatter def print_exception(exc, count) outcome = exc.failure? ? "FAILED" : "ERROR" - print "\n#{count})\n#{exc.description} #{outcome}\n" - print exc.message, "\n" - print exc.backtrace, "\n" + @err.print "\n#{count})\n#{exc.description} #{outcome}\n" + @err.print exc.message, "\n" + @err.print exc.backtrace, "\n" end # A convenience method to allow printing to different outputs. diff --git a/spec/mspec/lib/mspec/runner/mspec.rb b/spec/mspec/lib/mspec/runner/mspec.rb index 8331086196..19cf59b7d2 100644 --- a/spec/mspec/lib/mspec/runner/mspec.rb +++ b/spec/mspec/lib/mspec/runner/mspec.rb @@ -117,7 +117,7 @@ module MSpec raise e rescue SkippedSpecError => e return false - rescue Exception => exc + rescue Object => exc register_exit 1 actions :exception, ExceptionState.new(current && current.state, location, exc) return false |