Isso soa como a saída do seu comando phpunit está ficando em buffer (seja por PHP, o shell Bash, ou grep
). Existem algumas maneiras de descomprimir a saída para que ela seja mais responsiva.
unbuffer
Você pode tentar usar o comando unbuffer
que faz parte de expect
.
$ unbuffer phpunit tests/cases | grep -v --line-buffered "PHPUnit"
stdbuf
Você pode tentar usar o comando stdbuf
para desativar o armazenamento em buffer.
$ stdbuf -i0 -o0 -e0 phpunit tests/cases | grep -v --line-buffered "PHPUnit"
Detalhes dos interruptores:
-i, --input=MODE
adjust standard input stream buffering
-o, --output=MODE
adjust standard output stream buffering
-e, --error=MODE
adjust standard error stream buffering
Portanto, o acima define o armazenamento em buffer para STDIN, STDOUT, STDERR é definido como zero.
grep
O próprio grep pode ser o culpado na saída do buffer. Você pode dizer que ele armazena apenas uma linha no valor da saída. (Este que você já mencionou / descobriu, mas estou mencionando para que futuros leitores desta Q & A entendam que também há buffering).
$ phpunit tests/cases | grep -v --line-buffered "PHPUnit"