[PATCH 1/1] test: pre-set terminal capabilities (colors, boldness)
Tomi Ollila
tomi.ollila at iki.fi
Sat Aug 24 06:31:13 PDT 2013
By pre-setting terminal capabilities (colors, boldness) to shell
variables we avoid the overhead of running external commands (in
separate subshell) each time colored text is printed to screen.
---
test/test-lib.sh | 84 ++++++++++++++++++++++++++++----------------------------
1 file changed, 42 insertions(+), 42 deletions(-)
diff --git a/test/test-lib.sh b/test/test-lib.sh
index ffab1bb..8be2065 100644
--- a/test/test-lib.sh
+++ b/test/test-lib.sh
@@ -38,9 +38,6 @@ done,*)
;;
esac
-# Keep the original TERM for say_color and test_emacs
-ORIGINAL_TERM=$TERM
-
# dtach(1) provides more capable terminal environment to anything
# that requires more than dumb terminal...
[ x"${TERM:-dumb}" = xdumb ] && DTACH_TERM=vt100 || DTACH_TERM=$TERM
@@ -50,8 +47,49 @@ LANG=C
LC_ALL=C
PAGER=cat
TZ=UTC
+export LANG LC_ALL PAGER TZ
+
+if [ x"${TERM:-dumb}" != xdumb ]; then
+ [ -t 1 ] &&
+ # http://en.wikipedia.org/wiki/Tput
+ TC_BOLD=`tput bold 2>/dev/null` &&
+ TC_RED=`tput setaf 1 2>/dev/null` &&
+ TC_GREEN=`tput setaf 2 2>/dev/null` &&
+ TC_YELLOW=`tput setaf 3 2>/dev/null` &&
+ TC_RESET=`tput sgr0 2>/dev/null` ||
+ TC_BOLD=
+else
+ TC_BOLD=
+fi
+
+if test -n "$TC_BOLD"; then
+ say_color () {
+ case "$1" in
+ error) printf '%s%s' "$TC_BOLD" "$TC_RED" ;;
+ skip) printf '%s%s' "$TC_BOLD" "$TC_GREEN" ;;
+ pass) printf '%s' "$TC_GREEN" ;;
+ info) printf '%s' "$TC_YELLOW" ;;
+ *) test -n "$quiet" && return;;
+ esac
+ shift
+ printf " "
+ printf "$@"
+ printf '%s' "$TC_RESET"
+ print_subtest
+ }
+else
+ say_color() {
+ test -z "$1" && test -n "$quiet" && return
+ shift
+ printf " "
+ printf "$@"
+ print_subtest
+ }
+fi
+
TERM=dumb
-export LANG LC_ALL PAGER TERM TZ
+export TERM
+
GIT_TEST_CMP=${GIT_TEST_CMP:-diff -u}
if [[ ( -n "$TEST_EMACS" && -z "$TEST_EMACSCLIENT" ) || \
( -z "$TEST_EMACS" && -n "$TEST_EMACSCLIENT" ) ]]; then
@@ -82,15 +120,6 @@ _x32="$_x04$_x04$_x04$_x04$_x04$_x04$_x04$_x04"
# This test checks if command xyzzy does the right thing...
# '
# . ./test-lib.sh
-[ "x$ORIGINAL_TERM" != "xdumb" ] && (
- TERM=$ORIGINAL_TERM &&
- export TERM &&
- [ -t 1 ] &&
- tput bold >/dev/null 2>&1 &&
- tput setaf 1 >/dev/null 2>&1 &&
- tput sgr0 >/dev/null 2>&1
- ) &&
- color=t
while test "$#" -ne 0
do
@@ -136,35 +165,6 @@ else
}
fi
-if test -n "$color"; then
- say_color () {
- (
- TERM=$ORIGINAL_TERM
- export TERM
- 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
- *) test -n "$quiet" && return;;
- esac
- shift
- printf " "
- printf "$@"
- tput sgr0
- print_subtest
- )
- }
-else
- say_color() {
- test -z "$1" && test -n "$quiet" && return
- shift
- printf " "
- printf "$@"
- print_subtest
- }
-fi
-
error () {
say_color error "error: $*\n"
GIT_EXIT_OK=t
--
1.8.0
More information about the notmuch
mailing list