From: Johannes Sixt Date: Mon, 22 Oct 2007 08:53:36 GMT Subject: Re: [PATCH] Add some fancy colors in the test library when terminal supports it. Message-ID: <471C6510.8010300@viscovery.net> In-Reply-To: <20071022081341.GC32763@artemis.corp> Pierre Habouzit schrieb: > Signed-off-by: Pierre Habouzit > --- > > Maybe this is just me, but I don't find the output of the test-suite > easy to watch while scrolling. This puts some colors in proper places. > > * end-test summaries are in green or red depending on the sucess of > the tests. > * errors are in red. > * skipped tests and other things that tests `say` are in brown (now > you can _see_ that your testsuite skips some tests on purpose, I > only noticed recently that I missed part of the environment for > proper testing). > > I'm not 100% sure the test to see if terminal supports color is correct, and > people using emacs shell buffer or alike tools may have better ideas on how to > make it. > > and yes, I know that it "depends" upon tput, but if tput isn't available, the > [ "x$TERM" != "xdumb" ] && tput hpa 60 >/dev/null 2>&1 && tput setaf 1 >/dev/null 2>&1 > expression will fail, and color will be disabled. > > t/test-lib.sh | 32 ++++++++++++++++++++++---------- > 1 files changed, 22 insertions(+), 10 deletions(-) > > diff --git a/t/test-lib.sh b/t/test-lib.sh > index cc1253c..c6521c0 100644 > --- a/t/test-lib.sh > +++ b/t/test-lib.sh > @@ -59,14 +59,24 @@ esac > # ' > # . ./test-lib.sh > > +[ "x$TERM" != "xdumb" ] && tput hpa 60 >/dev/null 2>&1 && tput setaf 1 >/dev/null 2>&1 > +nocolor=$? test "x$TERM" != "xdumb" && tput hpa 60 >/dev/null 2>&1 && tput setaf 1 >/dev/null 2>&1 && color=t BTW, doesn't tput fail if stdout/stderr is not a terminal, like above? > + > +say_color () { > + [ "$nocolor" = 0 ] && [ "$1" != '-1' ] && tput setaf "$1" > + shift > + echo "* $*" > + tput op > +} What if tput is not available, like on Windows? How about this (at the end of the file, so it can obey --no-color): if test "$color"; then say_color () { test "$1" != '-1' && tput setaf "$1" shift echo "* $*" tput op } else say_color() { shift echo "* $*" } fi > + --no-color) > + nocolor=1; shift ;; color=; shift ;; -- Hannes "We don't need no double negation"