Add some fancy colors in the test library when terminal supports it.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Pierre Habouzit 2007-10-24 22:03:38 +02:00 committed by Junio C Hamano
parent d90a7fda35
commit 55db1df0c8

View File

@ -59,15 +59,11 @@ esac
# ' # '
# . ./test-lib.sh # . ./test-lib.sh
error () { [ "x$TERM" != "xdumb" ] &&
echo "* error: $*" tput bold >/dev/null 2>&1 &&
trap - exit tput setaf 1 >/dev/null 2>&1 &&
exit 1 tput sgr0 >/dev/null 2>&1 &&
} color=t
say () {
echo "* $*"
}
test "${test_description}" != "" || test "${test_description}" != "" ||
error "Test script did not set test_description." error "Test script did not set test_description."
@ -84,6 +80,8 @@ do
exit 0 ;; exit 0 ;;
-v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose) -v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
verbose=t; shift ;; verbose=t; shift ;;
--no-color)
color=; shift ;;
--no-python) --no-python)
# noop now... # noop now...
shift ;; shift ;;
@ -92,6 +90,36 @@ do
esac esac
done done
if test -n "$color"; then
say_color () {
case "$1" in
error) tput bold; tput setaf 1;; # bold red
skip) tput bold; tput setaf 2;; # bold green
pass) tput setaf 2;; # green
info) tput setaf 3;; # brown
*);;
esac
shift
echo "* $*"
tput sgr0
}
else
say_color() {
shift
echo "* $*"
}
fi
error () {
say_color error "error: $*"
trap - exit
exit 1
}
say () {
say_color info "$*"
}
exec 5>&1 exec 5>&1
if test "$verbose" = "t" if test "$verbose" = "t"
then then
@ -122,13 +150,13 @@ test_tick () {
test_ok_ () { test_ok_ () {
test_count=$(expr "$test_count" + 1) test_count=$(expr "$test_count" + 1)
say " ok $test_count: $@" say_color "" " ok $test_count: $@"
} }
test_failure_ () { test_failure_ () {
test_count=$(expr "$test_count" + 1) test_count=$(expr "$test_count" + 1)
test_failure=$(expr "$test_failure" + 1); test_failure=$(expr "$test_failure" + 1);
say "FAIL $test_count: $1" say_color error "FAIL $test_count: $1"
shift shift
echo "$@" | sed -e 's/^/ /' echo "$@" | sed -e 's/^/ /'
test "$immediate" = "" || { trap - exit; exit 1; } test "$immediate" = "" || { trap - exit; exit 1; }
@ -158,9 +186,9 @@ test_skip () {
done done
case "$to_skip" in case "$to_skip" in
t) t)
say >&3 "skipping test: $@" say_color skip >&3 "skipping test: $@"
test_count=$(expr "$test_count" + 1) test_count=$(expr "$test_count" + 1)
say "skip $test_count: $1" say_color skip "skip $test_count: $1"
: true : true
;; ;;
*) *)
@ -247,11 +275,11 @@ test_done () {
# The Makefile provided will clean this test area so # The Makefile provided will clean this test area so
# we will leave things as they are. # we will leave things as they are.
say "passed all $test_count test(s)" say_color pass "passed all $test_count test(s)"
exit 0 ;; exit 0 ;;
*) *)
say "failed $test_failure among $test_count test(s)" say_color error "failed $test_failure among $test_count test(s)"
exit 1 ;; exit 1 ;;
esac esac
@ -296,8 +324,8 @@ do
done done
case "$to_skip" in case "$to_skip" in
t) t)
say >&3 "skipping test $this_test altogether" say_color skip >&3 "skipping test $this_test altogether"
say "skip all tests in $this_test" say_color skip "skip all tests in $this_test"
test_done test_done
esac esac
done done