class Spec::Runner::Formatter::QuickfixFormatter

Constants

BACKTRACE_REGEXP
MULTI_LINE_ERRORS

turn this on to output multiline error in quickfix. This kinda abuses quickfix but can provide the backtrace

Public Class Methods

new(options, output) click to toggle source
# File lib/spec/quickfix_formatter.rb, line 9
def initialize(options, output)
  @options = options
  @output = output
  unless @output.is_a?(IO)
    @output = File.new(output, 'w')
  end
end

Public Instance Methods

example_failed(example, counter, failure) click to toggle source

use with this errorformat set errorformat=%f:%l\ %n\ %m

# File lib/spec/quickfix_formatter.rb, line 19
def example_failed(example, counter, failure)
  first_time = true

  failure.exception.backtrace.reverse.each do |frame|
    file, line, message = parse_backtrace(frame)
    message = failure.header if message.blank?

    if first_time and failure.exception.message.present?
      first_time = false
      message += failure.exception.message
    end

    @output.puts "%s:%d %d %s" % [file, line, counter, message]
    @output.flush

    MULTI_LINE_ERRORS or break
  end
end

Private Instance Methods

parse_backtrace(trace) click to toggle source
# File lib/spec/quickfix_formatter.rb, line 42
def parse_backtrace(trace)
  BACKTRACE_REGEXP.match(trace)[1..3]
end