2009-12-17 7 views
3

J'ai utilisé la commande OSX 'say' pour signaler la fin des tests de longue durée. C'est facile et pratique. Je voudrais lui faire parler la dernière ligne des résultats qui dit "6 tests, 18 assertions, 0 échecs, 0 erreurs" mais garde toujours la sortie en cours. Des idees pour faire cela?Avoir ruby ​​Unit :: Test parle les résultats du test

J'ai essayé:

ruby overlay_test.rb | tail -n 1 | say 

Mais cela ne sort pas les résultats des tests comme ils se produisent.

Points bonus pour faire dire seulement les deux dernières parties de la ligne "0 échecs, 0 erreurs".

Répondre

4

Vous pouvez utiliser tee pour diriger la sortie vers des fichiers/processus multiples (ici, say et STDOUT):

ruby overlay_test.rb | tail -n 1 | tee >(say) 

Pour le bonus, se débarrasser de ce que vous ne voulez pas sed:

ruby overlay_test.rb | tail -n 1 | sed -e 's/.*assertions, //' | tee >(say) 
2

Merci!

tee est exactement ce dont j'avais besoin. Bien que la commande gagnante avéré être:

ruby overlay_test.rb | tee >(tail -n 1 |sed -e 's/.*assertions, //' | say) 

depuis que je voulais voir plus que la dernière ligne du test quand il fonctionne.

Questions connexes