Hacking green bar color output into Autotest
update: You don't need to do this hack anymore - the RedGreen plugin is builtin into autotest with the latest versions.
A much welcome upgrade of the indispensable autotest recently came out which speeds things up greatly, but the output was still plain test_unit output. There are now hooks to add plugins to add widgets or whatever crazy output you want, but all I wanted was a green or red bar in the console. Taking some help from RedGreen by Pat Eyler for the escape chars, here's out make your autotest output a bit more feedbackie:
add this to the utility section of autotest.rb (yes, just hack the gem - its a minor change and the codebase is simple enough):
# filter output for colorized green/red bar
def filter_output(results)
filtered = ""
results.each do |line|
if line =~ /\d+ tests, \d+ assertions, 0 failures, 0 errors/
line = "\e[32m#{BAR}\n#{$&}\e[0m\n\n"
elsif line =~ /\d+ tests, \d+ assertions, (\d+) failures, (\d+) errors/
if $1 != 0 || $2 != 0
line = "\e[31m#{BAR}\n#{$&}\e[0m\n\n"
end
end
filtered <<line
end
filtered
end
Then change the method "run_tests" to call filter output:
....
@results = `#{cmd}`
hook :ran_command
puts filter_output(@results)
....
And you'll have output like this:


11 Comments