class Turn::CueReporter

Cue Reporter

Inspired by Shindo.

Constants

HELP

Public Instance Methods

error(exception, message=nil) click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 62
def error(exception, message=nil)
  #message = exception.to_s.split("\n")[2..-1].join("\n")
  message = message || exception.to_s
  io.puts("#{ERROR}")
  io.puts(message) #if message

  prompt
end
fail(assertion, message=nil) click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 47
def fail(assertion, message=nil)
  io.puts(" #{FAIL}")
  #message = assertion.location[0] + "\n" + assertion.message #.gsub("\n","\n")
  message = message || assertion.to_s
  #if message
    message = Colorize.red(message)
    message = message.to_s.tabto(8)
    io.puts(message)
  #end

  show_captured_output

  prompt
end
finish_suite(suite) click to toggle source

def finish_case(kase) end

# File lib/turn/reporters/cue_reporter.rb, line 111
def finish_suite(suite)
  total      = suite.count_tests
  passes     = suite.count_passes
  assertions = suite.count_assertions
  failures   = suite.count_failures
  errors     = suite.count_errors
  skips      = suite.count_skips

  bar = '=' * 78
  # @FIXME: Remove this, since Colorize already take care of colorize?
  if colorize?
    bar = if pass == total then Colorize.green(bar)
          else Colorize.red(bar) end
  end

  # @FIXME: Should we add suite.runtime, instead if this lame time calculations?
  tally = [total, assertions, (Time.new - @time)]

  io.puts bar
  io.puts "  pass: %d,  fail: %d,  error: %d, skip: %d" % [passes, failures, errors, skips]
  io.puts "  total: %d tests with %d assertions in %f seconds" % tally
  io.puts bar
end
finish_test(test) click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 80
def finish_test(test)
  $stdout = STDOUT
  $stderr = STDERR
end
pass(message=nil) click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 38
def pass(message=nil)
  io.puts " #{PASS}"
  if message
    message = Colorize.green(message)
    message = message.to_s.tabto(8)
    io.puts(message)
  end
end
show_captured_output() click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 85
def show_captured_output
  show_captured_stdout
  show_captured_stderr
end
show_captured_stderr() click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 99
    def show_captured_stderr
      @stderr.rewind
      return if @stderr.eof?
      STDOUT.puts("\nSTDERR:
#{@stderr.read}
".tabto(8))
    end
show_captured_stdout() click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 90
    def show_captured_stdout
      @stdout.rewind
      return if @stdout.eof?
      STDOUT.puts("\nSTDOUT:
#{@stdout.read}
".tabto(8))
    end
skip(exception, message=nil) click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 71
def skip(exception, message=nil)
  message = message || exception.to_s
  io.puts("#{SKIP}")
  io.puts(message) #if message

  #prompt
end
start_case(kase) click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 21
def start_case(kase)
  io.puts(kase.name)
end
start_suite(suite) click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 11
def start_suite(suite)
  @suite = suite
  @time  = Time.now
  @stdout = StringIO.new
  @stderr = StringIO.new
  #files = suite.collect{ |s| s.file }.join(' ')
  io.puts "Loaded suite #{suite.name}"
  #io.puts "Started"
end
start_test(test) click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 25
def start_test(test)
  #if @file != test.file
  #  @file = test.file
  #  io.puts(test.file)
  #end
  name = naturalized_name(test)
  io.print Colorize.blue("    %-69s" % name)
  $stdout = @stdout
  $stderr = @stderr
  $stdout.rewind
  $stderr.rewind
end

Private Instance Methods

prompt() click to toggle source
# File lib/turn/reporters/cue_reporter.rb, line 137
def prompt
  begin
    io << "  [c,i,q,r,t,#,?] "
    io.flush
    until inp = $stdin.gets ; sleep 1 ; end
    answer = inp.strip
    case answer
    when 'c', ''
    when 'r'
      # how to reload and start over?
      io.puts "restart has not been implemented yet"
    when 'i'
      # how to drop into an interactive console?
      io.puts "irb support has not been implemented yet"
    when 'b', 't'
      io.puts $@
      raise ArgumentError
    when /^\d+$/
      io.puts $@[0..answer.to_i]
      raise ArgumentError
    when 'q'
      exit -1
    when '?'
      io.puts HELP
      raise ArgumentError #prompt
    else
      raise ArgumentError
    end
  rescue ArgumentError
    retry
  end
end