tldr; 1) redirecionamento de saída; 2) não trap .
Resposta completa:
-
Na sua função
runTests, você pode redirecionar a saída para alguns arquivos de log únicos ou múltiplos. Em vez de criar uma variável localoutpute nunca usá-la, basta executarSPEC=desktop/homepage npm test > uniqe_log_$xouSPEC=desktop/homepage npm test > combined_log. Para isso, eu emprestado sorrateiramente a variávelxque você declarou no topo do seu script e incrementar cada teste. -
Também na sua função
runTests, não é necessário definir uma variávelexitCodeou executarecho; simplesmente executereturn $?. -
Eu chamo BS na sua afirmação de que seu script está próximo do que você quer, porque na sua função
runTestsMany, você chama a funçãorunTestsfora do seuwhile, então variávelexitcodeserá sempre ser o mesmo para todas as iterações1..numtotal. -
Você presume que
exitcodesó pode ser 1 ou 0, portanto não há necessidade de realizar nenhum teste, basta adicioná-lo à variávelnumerror, ou seja. numError = $ (($ numError + $ exitcode)). -
Eu não vejo o ponto de executar o indivíduo
echos para sucesso ou erro, pois ele não adiciona informações úteis e apenas sobrecarregará sua saída. -
A variável final declarada,
numsuccesstambém é desnecessária; basta colocar$(($numTotal - $numError))na instruçãoechosubsequente. -
Qual é a declaração
trap? Perdê-lo / removê-lo.