Instead of colorizing the output of PASS/SKIP/FAIL all the time, do it only when the terminal supports colors and stdout is opened on a terminal. Signed-off-by: Daniel Díaz <daniel.diaz@xxxxxxxxxx> --- scripts/runtime.bash | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/scripts/runtime.bash b/scripts/runtime.bash index 200d5b6..0c38787 100644 --- a/scripts/runtime.bash +++ b/scripts/runtime.bash @@ -2,9 +2,23 @@ : ${MAX_SMP:=$(getconf _NPROCESSORS_CONF)} : ${TIMEOUT:=90s} -PASS() { echo -ne "\e[32mPASS\e[0m"; } -SKIP() { echo -ne "\e[33mSKIP\e[0m"; } -FAIL() { echo -ne "\e[31mFAIL\e[0m"; } +# Define text colors +# Check available colors on the terminal, if any +ncolors=`tput colors 2>/dev/null` +color_reset= +color_red= +color_green= +color_yellow= +# If stdout exists and number of colors is eight or more, use them +if [ -t 1 -a "$ncolors" -a "$ncolors" -ge 8 ]; then + color_reset="\e[0m" + color_red="\e[31m" + color_green="\e[32m" + color_yellow="\e[33m" +fi +PASS() { echo -ne "${color_green}PASS${color_reset}"; } +SKIP() { echo -ne "${color_yellow}SKIP${color_reset}"; } +FAIL() { echo -ne "${color_red}FAIL${color_reset}"; } extract_summary() { -- 2.17.1