Regression: Add ANSI colours to highlight test status

This patch adds a very basic pretty-printing of the test status
(passed or failed) to highlight failing tests even more: green for
passed, and red for failed. The printing only uses ANSI it the target
output is a tty and supports ANSI colours. Hence, any regression
scripts that are outputting to files or sending e-mails etc should
still be fine.
This commit is contained in:
Andreas Hansson
2012-04-14 05:44:27 -04:00
parent b6aa6d55eb
commit b9bc530ad2
3 changed files with 36 additions and 9 deletions

View File

@@ -38,6 +38,9 @@ Import('env')
env['DIFFOUT'] = File('diff-out')
# get the termcap from the environment
termcap = env['TERMCAP']
# Dict that accumulates lists of tests by category (quick, medium, long)
env.Tests = {}
@@ -171,7 +174,26 @@ def run_test_string(target, source, env):
testAction = env.Action(run_test, run_test_string)
def print_test(target, source, env):
print '***** ' + contents(source[0])
# print the status with colours to make it easier to see what
# passed and what failed
line = contents(source[0])
# split the line to words and get the last one
words = line.split()
status = words[-1]
# if the test failed make it red, if it passed make it green, and
# skip the punctuation
if status == "FAILED!":
status = termcap.Red + status[:-1] + termcap.Normal + status[-1]
elif status == "passed.":
status = termcap.Green + status[:-1] + termcap.Normal + status[-1]
# put it back in the list and join with space
words[-1] = status
line = " ".join(words)
print '***** ' + line
return 0
printAction = env.Action(print_test, strfunction = None)