class Teaspoon::Formatter::Base

Constants

RESERVED_PARAMS

Attributes

errors[RW]
failures[RW]
passes[RW]
pendings[RW]
run_count[RW]
total_count[RW]

Public Class Methods

new(suite_name = :default, output_file = nil) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 8
def initialize(suite_name = :default, output_file = nil)
  @suite_name  = suite_name.to_s
  @output_file = parse_output_file(output_file)
  @stdout      = ""
  @suite       = nil
  @last_suite  = nil

  @total_count = 0
  @run_count   = 0
  @passes      = []
  @pendings    = []
  @failures    = []
  @errors      = []
  File.open(@output_file, "w") { |f| f.write("") } if @output_file
end

Public Instance Methods

complete(failure_count, log = true) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 83
def complete(failure_count, log = true)
  log_complete(failure_count) if log
end
console(message, log = true) click to toggle source

console message come from console.log/debug/error

# File lib/teaspoon/formatter/base.rb, line 63
def console(message, log = true)
  @stdout << message
  log_console(message) if log
end
coverage(message, log = true) click to toggle source

called with the text versions of coverage if configured to do so

# File lib/teaspoon/formatter/base.rb, line 74
def coverage(message, log = true)
  log_coverage(message) if log
end
error(result, log = true) click to toggle source

errors are reported from the onError handler in phantomjs, so they're not linked to a result

# File lib/teaspoon/formatter/base.rb, line 52
def error(result, log = true)
  @errors << result
  log_error(result) if log
end
exception(result = {}, log = true) click to toggle source

exception came from startup errors in the server (will exit after logging)

# File lib/teaspoon/formatter/base.rb, line 58
def exception(result = {}, log = true)
  log_exception(result) if log
end
result(result, log = true) click to toggle source

final report

# File lib/teaspoon/formatter/base.rb, line 69
def result(result, log = true)
  log_result(result) if log
end
runner(result, log = true) click to toggle source

beginning of the run

# File lib/teaspoon/formatter/base.rb, line 25
def runner(result, log = true)
  @total_count = result.total
  log_runner(result) if log
end
spec(result, log = true) click to toggle source

each spec, after the spec has reported to the client runner

# File lib/teaspoon/formatter/base.rb, line 38
def spec(result, log = true)
  @run_count += 1
  if result.passing?
    @passes << result
  elsif result.pending?
    @pendings << result
  else
    @failures << result
  end
  log_spec(result) if log
  @stdout = ""
end
suite(result, log = true) click to toggle source

each suite, before any specs

# File lib/teaspoon/formatter/base.rb, line 31
def suite(result, log = true)
  @suite = result
  log_suite(result) if log
  @last_suite = result
end
threshold_failure(message, log = true) click to toggle source

called with an array of strings which explain which coverage thresholds failed

# File lib/teaspoon/formatter/base.rb, line 79
def threshold_failure(message, log = true)
  log_threshold_failure(message) if log
end

Protected Instance Methods

log_complete(_failure_count) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 117
def log_complete(_failure_count); end
log_console(_message) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 109
def log_console(_message); end
log_coverage(_message) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 113
def log_coverage(_message); end
log_error(_result) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 105
def log_error(_result); end
log_exception(_result) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 107
def log_exception(_result); end
log_failing_spec(_result) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 103
def log_failing_spec(_result); end
log_passing_spec(_result) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 99
def log_passing_spec(_result); end
log_pending_spec(_result) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 101
def log_pending_spec(_result); end
log_result(_result) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 111
def log_result(_result); end
log_runner(_result) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 89
def log_runner(_result); end
log_spec(result) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 93
def log_spec(result)
  return log_passing_spec(result) if result.passing?
  return log_pending_spec(result) if result.pending?
  log_failing_spec(result)
end
log_suite(_result) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 91
def log_suite(_result); end
log_threshold_failure(_message) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 115
def log_threshold_failure(_message); end

Private Instance Methods

colorize(str, color_code) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 137
def colorize(str, color_code)
  return str unless Teaspoon.configuration.color || @output_file
  "\e[#{color_code}m#{str}\e[0m"
end
filename(file) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 146
def filename(file)
  uri = URI(file)

  params = String(uri.query).split("&").reject do |param|
    RESERVED_PARAMS.include?(param.split("=").first)
  end

  filename = uri.path.sub(%r(^/assets/), "")
  filename += "?#{params.join("&")}" if params.any?
  filename
end
log_line(str = "", color_code = nil) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 126
def log_line(str = "", color_code = nil)
  return log_to_file("#{str}\n", @output_file) if @output_file
  STDOUT.print("#{color_code ? colorize(str, color_code) : str}\n")
end
log_str(str, color_code = nil) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 121
def log_str(str, color_code = nil)
  return log_to_file(str, @output_file) if @output_file
  STDOUT.print(color_code ? colorize(str, color_code) : str)
end
log_to_file(str, output_file) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 131
def log_to_file(str, output_file)
  @_output_file = File.open(output_file, "a") { |f| f.write(str) }
rescue IOError => e
  raise Teaspoon::FileWriteError.new(e.message)
end
parse_output_capture(cap) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 163
def parse_output_capture(cap)
  case cap
  when "suite_name"
    @suite_name
  when "date"
    Time.now.to_i
  else
    warn ["Teaspoon::Formatter - Output File can only contain the placeholders %{suite_name} or %{date}.",
          "%{#{cap}} is not supported and will be ignored."].join("\n")
    ""
  end
end
parse_output_file(output) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 158
def parse_output_file(output)
  return output unless output
  output.gsub(/%{([^}]*)}/) { parse_output_capture($1) }
end
pluralize(str, value) click to toggle source
# File lib/teaspoon/formatter/base.rb, line 142
def pluralize(str, value)
  value == 1 ? "#{value} #{str}" : "#{value} #{str}s"
end