Adicione aspas duplas em torno dos seus comandos:
res="$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js"))"
echo "$res"
Isso preservará as cores ANSI.
Eu quero obter a saída colorida original do comando em uma variável que eu possa imprimir.
Eu tenho o seguinte script:
#Colors
RED='3[0;31m'
NC='3[0m' # No Color
# Runing test cases
res=$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js")) #Command that runs test cases
RESULT=$?
[ $RESULT -ne 0 ] && echo -e "$res ${RED}Some TestCaes did not pass. Please check your code.${NC}" && exit 1
echo "All test cases passed.\n"
exit 0
Isso me dá a seguinte saída:
Some TestCaes did not pass. Please check your code.:13:16)
onde :13:16)
part são alguns dos últimos caracteres de saída deste comando res=$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js"))
.
A execução de mocha $(find "tests/non-ui" -name "*.js")
deste comando, por si só, fornece a seguinte saída:
All element creation test:
1) Label
0 passing (16ms)
1 failing
1) All element creation test: Label:
AssertionError: false == true
+ expected - actual
-false
+true
at Context.<anonymous> (tests/non-ui/sample-test.js:13:16)
Como posso obter uma saída inteira em uma variável?
Adicione aspas duplas em torno dos seus comandos:
res="$(script -q /dev/null mocha $(find "tests/non-ui" -name "*.js"))"
echo "$res"
Isso preservará as cores ANSI.