3

我一直在使用内置的 OSX 'say' 命令来表示长时间运行测试的结束。这既简单又方便。

我想让它说出结果的最后一行,上面写着“6 个测试,18 个断言,0 个失败,0 个错误”,但仍然保持正在进行的输出。任何想法如何做到这一点?

我试过了:

ruby overlay_test.rb | tail -n 1 | say

但这不会在测试结果发生时输出。

使它只说“0失败,0错误”行的最后两部分的奖励积分。

4

2 回答 2

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)
于 2009-12-17T22:28:21.760 回答
2

谢谢!

tee正是我所需要的。尽管最终获胜的命令是:

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

因为我想看到的不仅仅是测试运行时的最后一行。

于 2009-12-17T23:06:25.690 回答