diff -r 9b47e4dfac14 -r cbdb9ab37135 SConstruct --- a/SConstruct Sat Apr 07 11:53:24 2012 +0100 +++ b/SConstruct Sat Apr 07 12:35:01 2012 +0100 @@ -120,6 +120,7 @@ sys.path[1:1] = extra_python_paths from m5.util import compareVersions, readCommand +from m5.util.terminal import get_termcap help_texts = { "options" : "", @@ -169,14 +170,7 @@ AddLocalOption('--verbose', dest='verbose', action='store_true', help='Print full tool command lines') -use_colors = GetOption('use_colors') -if use_colors: - from m5.util.terminal import termcap -elif use_colors is None: - # option unspecified; default behavior is to use colors iff isatty - from m5.util.terminal import tty_termcap as termcap -else: - from m5.util.terminal import no_termcap as termcap +termcap = get_termcap(GetOption('use_colors')) ######################################################################## # @@ -463,6 +457,8 @@ Export('Transform') +# enable the regression script to use the termcap +main['TERMCAP'] = termcap if GetOption('verbose'): def MakeAction(action, string, *args, **kwargs): diff -r 9b47e4dfac14 -r cbdb9ab37135 src/python/m5/util/terminal.py --- a/src/python/m5/util/terminal.py Sat Apr 07 11:53:24 2012 +0100 +++ b/src/python/m5/util/terminal.py Sat Apr 07 12:35:01 2012 +0100 @@ -93,6 +93,15 @@ else: tty_termcap = no_termcap +def get_termcap(use_colors = None): + if use_colors: + return termcap + elif use_colors is None: + # option unspecified; default behavior is to use colors iff isatty + return tty_termcap + else: + return no_termcap + def test_termcap(obj): for c_name in color_names: c_str = getattr(obj, c_name) diff -r 9b47e4dfac14 -r cbdb9ab37135 tests/SConscript --- a/tests/SConscript Sat Apr 07 11:53:24 2012 +0100 +++ b/tests/SConscript Sat Apr 07 12:35:01 2012 +0100 @@ -38,6 +38,9 @@ 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 @@ 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)