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 | 1 + test/test-lib.sh | 25 ++++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/test/notmuch-test b/test/notmuch-test index bd3e080af01e..df10ccf22b04 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -41,6 +41,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 diff --git a/test/test-lib.sh b/test/test-lib.sh index f5d367aae2d7..0a0004a5c7a3 100644 --- a/test/test-lib.sh +++ b/test/test-lib.sh @@ -131,15 +131,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 @@ -180,6 +172,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 () { ( -- 2.13.3 _______________________________________________ notmuch mailing list notmuch@notmuchmail.org https://notmuchmail.org/mailman/listinfo/notmuch