1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00

Refactor test colorization

This commit is contained in:
Ryan Fitzgerald 2012-09-08 21:42:02 -07:00
parent 6a9d59c6a1
commit f4b7ddf870

View file

@ -8,34 +8,47 @@ puts "Ruby v#{RUBY_VERSION} (#{defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"}), P
require 'bacon' require 'bacon'
require 'open4' require 'open4'
# Colorize output (greeneggs (c) 2009 Michael Fleet) # Colorize output (based on greeneggs (c) 2009 Michael Fleet)
# TODO: Make own gem (assigned to rking)
module Bacon module Bacon
class << self
# ANSI terminal colors
COLORS = {'F' => 31, 'E' => 35, 'M' => 33, '.' => 32} COLORS = {'F' => 31, 'E' => 35, 'M' => 33, '.' => 32}
def colorize_string(text, color) module TestUnitOutput
"\e[1m\e[#{COLORS[color]}m#{text}\e[0m" def handle_specification(name)
@use_color = Pry::Helpers::BaseHelpers.use_ansi_codes?
yield
end end
def colorize_result(out) def handle_requirement(description)
return out unless Pry::Helpers::BaseHelpers.use_ansi_codes? error = yield
summary_color = (out =~ /0 failures, 0 errors/) ? '.' : 'F' if error.empty?
print colorize_string('.')
out. else
sub(/^.$/, colorize_string('\0', out)). print colorize_string(error[0..0])
sub(/^.+\d+ failures, \d+ errors$/, colorize_string('\0', summary_color)) end
end end
def puts(*args) def handle_summary
args.map! { |arg| arg.is_a?(String) ? colorize_result(arg) : arg } puts
super puts ErrorLog if Backtraces
out = "%d tests, %d assertions, %d failures, %d errors" %
Counter.values_at(:specifications, :requirements, :failed, :errors)
if Counter.values_at(:failed, :errors).inject(:+) > 0
puts colorize_string(out, 'F')
else
puts colorize_string(out, '.')
end
end end
def print(*args) def colorize_string(text, color = nil)
args.map! { |arg| arg.is_a?(String) ? colorize_result(arg) : arg } if @use_color
super "\e[#{ COLORS[color || text] }m#{ text }\e[0m"
else
text
end
end end
end end
end end