lib/teaspoon/formatters/dot_formatter.rb in teaspoon-0.7.9 vs lib/teaspoon/formatters/dot_formatter.rb in teaspoon-0.8.0

- old
+ new

@@ -1,104 +1,26 @@ -require 'teaspoon/formatters/base_formatter' +require "teaspoon/formatters/modules/report_module" module Teaspoon module Formatters - class DotFormatter < BaseFormatter + class DotFormatter < Base + include ReportModule - RED = 31 - GREEN = 32 - YELLOW = 33 - CYAN = 36 - - def spec(result, logged = false) - super(result) - return if logged - if result.passing? - log ".", GREEN - elsif result.pending? - log "*", YELLOW - else - log "F", RED - end - end - - # Errors are reported from the onError handler in Phantom, so they're not linked to a result - def error(error) - log "#{error["message"]}\n", RED - for trace in error["trace"] || [] - log " # #{filename(trace["file"])}:#{trace["line"]}#{trace["function"].present? ? " -- #{trace["function"]}" : ""}\n", CYAN - end - log "\n" - end - - def result(results) - log "\n\n" - log_information - log_stats(results) - log_failed_examples - super - end - protected - def log_information - log_pending if pendings.size > 0 - log_failures if failures.size > 0 + def log_spec(result) + return log_str(".", GREEN) if result.passing? + return log_str("*", YELLOW) if result.pending? + log_str("F", RED) end - def log_pending - log "Pending:\n" - pendings.each do |result| - log " #{result.description}\n", YELLOW - log " # Not yet implemented\n\n", CYAN - end + def log_console(message) + log_str(message) end - def log_failures - log "Failures:\n\n" - failures.each_with_index do |failure, index| - log " #{index + 1}) #{failure.description}\n" - log " Failure/Error: #{failure.message}\n\n", RED - end - end - - def log_stats(results) - log "Finished in #{results["elapsed"]} seconds\n" - stats = "#{pluralize("example", total)}, #{pluralize("failure", failures.size)}" - stats << ", #{pendings.size} pending" if pendings.size > 0 - log "#{stats}\n", stats_color - log "\n" unless failures.size == 0 - end - - def log_failed_examples - return if failures.size == 0 - log "Failed examples:\n\n" - failures.each do |failure| - log "teaspoon -s #{@suite_name} --filter=\"#{failure.link}\"\n", RED - end - end - - private - - def log(str, color_code = nil) - STDOUT.print(color_code ? colorize(str, color_code) : str) - end - - def colorize(str, color_code) - return str unless Teaspoon.configuration.color - "\e[#{color_code}m#{str}\e[0m" - end - - def pluralize(str, value) - value == 1 ? "#{value} #{str}" : "#{value} #{str}s" - end - - def stats_color - failures.size > 0 ? RED : pendings.size > 0 ? YELLOW : GREEN - end - - def filename(file) - file.gsub(%r(^http://127.0.0.1:\d+/assets/), "").gsub(/[\?|&]?body=1/, "") + def log_result(result) + log_line("\n") + super end end end end