]> git.notmuchmail.org Git - notmuch/commitdiff
test-lib.sh: colors to test output when parallel(1) is run on tty
authorTomi Ollila <tomi.ollila@iki.fi>
Wed, 8 May 2019 18:51:47 +0000 (21:51 +0300)
committerDavid Bremner <david@tethera.net>
Thu, 23 May 2019 11:00:31 +0000 (08:00 -0300)
Done via $COLORS_WITHOUT_TTY environment variable as passing options
to commands through parallel(1) does not look trivial.

Reorganized color checking in test-lib.sh a bit for this (perhaps
were not fully necessary but rest still an improvement):

  - color checking commands in subshell are not run before arg parsing
    (args may disable colors with --no-color)

  - [ -t 1 ] is checked before forking subshell

test/notmuch-test
test/test-lib.sh

index bbc2dc31b30d1c39b76c622bd6f93cbc5c69cc40..8e483383f79d67aa7d87c04949e51407ddb7542d 100755 (executable)
@@ -42,6 +42,7 @@ fi
 trap 'e=$?; kill $!; exit $e' HUP INT TERM
 # Run the tests
 if test -z "$NOTMUCH_TEST_SERIALIZE" && command -v parallel >/dev/null ; then
+    test -t 1 && export COLORS_WITHOUT_TTY=t || :
     if parallel -h | grep -q GNU ; then
         echo "INFO: running tests with GNU parallel"
         printf '%s\n' $TESTS | $TEST_TIMEOUT_CMD parallel
index 068e1029e5f30272883c53556d89e3844e278c71..ff18fae616b2aaf1a27dae10216309ded3006349 100644 (file)
@@ -134,15 +134,7 @@ add_gnupg_home ()
 # '
 # . ./test-lib.sh || exit 1
 
-[ "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
+color=maybe
 
 while test "$#" -ne 0
 do
@@ -183,6 +175,21 @@ else
     }
 fi
 
+test -n "$COLORS_WITHOUT_TTY" || [ -t 1 ] || color=
+
+if [ -n "$color" ] && [ "$ORIGINAL_TERM" != 'dumb' ] && (
+               TERM=$ORIGINAL_TERM &&
+               export TERM &&
+               tput bold
+               tput setaf
+               tput sgr0
+       ) >/dev/null 2>&1
+then
+       color=t
+else
+       color=
+fi
+
 if test -n "$color"; then
        say_color () {
                (