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 localoutput
e nunca usá-la, basta executarSPEC=desktop/homepage npm test > uniqe_log_$x
ouSPEC=desktop/homepage npm test > combined_log
. Para isso, eu emprestado sorrateiramente a variávelx
que 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ávelexitCode
ou 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çãorunTests
fora do seuwhile
, então variávelexitcode
será sempre ser o mesmo para todas as iterações1..numtotal
. -
Você presume que
exitcode
só 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
echo
s para sucesso ou erro, pois ele não adiciona informações úteis e apenas sobrecarregará sua saída. -
A variável final declarada,
numsuccess
também é desnecessária; basta colocar$(($numTotal - $numError))
na instruçãoecho
subsequente. -
Qual é a declaração
trap
? Perdê-lo / removê-lo.