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