do not output color in the testcases if stdout/stderr are not a /dev/pts
authorDavid Kalnischkies <kalnischkies@gmail.com>
Wed, 17 Aug 2011 12:37:25 +0000 (14:37 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Wed, 17 Aug 2011 12:37:25 +0000 (14:37 +0200)
test/integration/framework
test/integration/run-tests
test/libapt/run-tests

index ccab010..45c1f15 100644 (file)
@@ -1,16 +1,19 @@
 #!/bin/sh -- # no runable script, just for vi
 
 # we all like colorful messages
-CERROR="\e[1;31m" # red
-CWARNING="\e[1;33m" # yellow
-CMSG="\e[1;32m" # green
-CINFO="\e[1;96m" # light blue
-CDEBUG="\e[1;94m" # blue
-CNORMAL="\e[0;39m" # default system console color
-CDONE="\e[1;32m" # green
-CPASS="\e[1;32m" # green
-CFAIL="\e[1;31m" # red
-CCMD="\e[1;35m" # pink
+if expr match "$(readlink -f /proc/$$/fd/1)" '/dev/pts/[0-9]\+' > /dev/null && \
+   expr match "$(readlink -f /proc/$$/fd/2)" '/dev/pts/[0-9]\+' > /dev/null; then
+       CERROR="\e[1;31m" # red
+       CWARNING="\e[1;33m" # yellow
+       CMSG="\e[1;32m" # green
+       CINFO="\e[1;96m" # light blue
+       CDEBUG="\e[1;94m" # blue
+       CNORMAL="\e[0;39m" # default system console color
+       CDONE="\e[1;32m" # green
+       CPASS="\e[1;32m" # green
+       CFAIL="\e[1;31m" # red
+       CCMD="\e[1;35m" # pink
+fi
 
 msgdie() { echo "${CERROR}E: $1${CNORMAL}" >&2; exit 1; }
 msgwarn() { echo "${CWARNING}W: $1${CNORMAL}" >&2; }
@@ -42,7 +45,11 @@ if [ $MSGLEVEL -le 2 ]; then
        msgtest() { true; }
        msgpass() { echo -n " ${CPASS}P${CNORMAL}" >&2; }
        msgskip() { echo -n " ${CWARNING}S${CNORMAL}" >&2; }
-       msgfail() { echo -n " ${CFAIL}FAIL${CNORMAL}" >&2; }
+       if [ -n "$CFAIL" ]; then
+               msgfail() { echo -n " ${CFAIL}FAIL${CNORMAL}" >&2; }
+       else
+               msgfail() { echo -n " ###FAILED###" >&2; }
+       fi
 fi
 if [ $MSGLEVEL -le 3 ]; then
        msginfo() { true; }
index edac07d..2929868 100755 (executable)
@@ -8,17 +8,26 @@ if [ "$1" = "-q" ]; then
 elif [ "$1" = "-v" ]; then
        export MSGLEVEL=4
 fi
+
+if expr match "$(readlink -f /proc/$$/fd/1)" '/dev/pts/[0-9]\+' > /dev/null; then
+       CTEST='\033[1;32m'
+       CHIGH='\033[1;35m'
+       CRESET='\033[0m'
+elif [ -z "${MSGLEVEL}" ]; then
+       export MSGLEVEL=2
+fi
+
 for testcase in $(run-parts --list $DIR | grep '/test-'); do
-       if [ "$1" = "-q" ]; then
-               echo -n "\033[1;32mRun Testcase \033[1;35m$(basename ${testcase})\033[0m"
+       if [ "$MSGLEVEL" -le 2 ]; then
+               echo -n "${CTEST}Testcase ${CHIGH}$(basename ${testcase})${CRESET}: "
        else
-               echo "\033[1;32mRun Testcase \033[1;35m$(basename ${testcase})\033[0m"
+               echo "${CTEST}Run Testcase ${CHIGH}$(basename ${testcase})${CRESET}"
        fi
        if ! ${testcase}; then
                  FAIL=$((FAIL+1))
                  echo "$(basename $testcase) ... FAIL"
         fi
-       if [ "$1" = "-q" ]; then
+       if [ "$MSGLEVEL" -le 2 ]; then
                echo
        fi
 done
index c2aeccc..275a789 100755 (executable)
@@ -7,14 +7,28 @@ echo "Compiling the tests …"
 echo "Running all testcases …"
 LDPATH="$DIR/../../build/bin"
 EXT="_libapt_test"
+
+# detect if output is on a terminal (colorful) or better not
+if expr match "$(readlink -f /proc/$$/fd/1)" '/dev/pts/[0-9]\+' > /dev/null; then
+       COLHIGH='\033[1;35m'
+       COLRESET='\033[0m'
+       TESTOKAY='\033[1;32mOKAY\033[0m'
+       TESTFAIL='\033[1;31mFAILED\033[0m'
+else
+       COLHIGH=''
+       COLRESET=''
+       TESTOKAY='OK'
+       TESTFAIL='###FAILED###'
+fi
+
 for testapp in $(ls ${LDPATH}/*$EXT)
 do
        name=$(basename ${testapp})
+       NAME="${COLHIGH}${name}${COLRESET}"
        tmppath=""
 
        if [ $name = "GetListOfFilesInDir${EXT}" ]; then
                # TODO: very-low: move env creation to the actual test-app
-               echo "Prepare Testarea for \033[1;35m$name\033[0m ..."
                tmppath=$(mktemp -d)
                touch "${tmppath}/anormalfile" \
                        "${tmppath}/01yet-anothernormalfile" \
@@ -46,7 +60,6 @@ do
                ln -s "${tmppath}/anormalfile" "${tmppath}/linkedfile.list"
                ln -s "${tmppath}/non-existing-file" "${tmppath}/brokenlink.list"
        elif [ $name = "getLanguages${EXT}" ]; then
-               echo "Prepare Testarea for \033[1;35m$name\033[0m ..."
                tmppath=$(mktemp -d)
                touch "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-tr" \
                        "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-pt" \
@@ -56,11 +69,10 @@ do
                tmppath="${DIR}/versions.lst"
        fi
 
-       echo -n "Testing with \033[1;35m${name}\033[0m ... "
-       LD_LIBRARY_PATH=${LDPATH} ${testapp} ${tmppath} && echo "\033[1;32mOKAY\033[0m" || echo "\033[1;31mFAILED\033[0m"
+       echo -n "Testing with ${NAME} "
+       LD_LIBRARY_PATH=${LDPATH} ${testapp} ${tmppath} && echo "$TESTOKAY" || echo "$TESTFAIL"
 
        if [ -n "$tmppath" -a -d "$tmppath" ]; then
-               echo "Cleanup Testarea after \033[1;35m$name\033[0m ..."
                rm -rf "$tmppath"
        fi