2009-12-17 5 views
3

Я использовал встроенную команду OSX «say», чтобы сигнализировать о завершении длительных тестов. Это легко и удобно.Имейте ruby ​​Unit :: Test, сообщите результаты теста

Я бы хотел, чтобы это говорило о последней строке результатов, в которой говорится: «6 тестов, 18 утверждений, 0 ошибок, 0 ошибок», но все равно сохраняют текущий вывод. Есть идеи, как это сделать?

Я пробовал:

ruby overlay_test.rb | tail -n 1 | say 

Но это не выводит результаты тестов, как они происходят.

Бонусные баллы за то, что он произнес только последние две части строки «0 ошибок, 0 ошибок».

ответ

4

Вы можете использовать tee направить вывод в несколько файлов/процессов (здесь say и STDOUT):

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

Для бонуса, избавиться от того, что вы не хотите с sed:

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

Спасибо!

tee - это именно то, что мне нужно. Хотя выигрыш команда оказалась:

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

, так как я хотел бы видеть больше, чем просто в последней строке теста, когда он работает.