blob: 6b9f568020d30e5f29e1e46091d06c48d44a161e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
class Colorize
def initialize(color = nil)
@colors = @reset = nil
if color or (color == nil && STDOUT.tty?)
if (/\A\e\[.*m\z/ =~ IO.popen("tput smso", "r", err: IO::NULL, &:read) rescue nil)
@beg = "\e["
@colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}
@reset = "#{@beg}m"
end
end
self
end
DEFAULTS = {"pass"=>"32;1", "fail"=>"31;1", "skip"=>"33;1"}
def decorate(str, name)
if @colors and color = (@colors[name] || DEFAULTS[name])
"#{@beg}#{color}m#{str}#{@reset}"
else
str
end
end
def pass(str)
decorate(str, "pass")
end
def fail(str)
decorate(str, "fail")
end
def skip(str)
decorate(str, "skip")
end
end
if $0 == __FILE__
colorize = Colorize.new
col = ARGV.shift
ARGV.each {|str| puts colorize.decorate(str, col)}
end
|