我试图让 watchr 在文件更改时自动运行测试,并获得了我需要的大部分工作,除了 RSpec 中的所有 ANSI 颜色都被忽略这一事实。违规代码如下:
stdin, stdout, stderr = Open3.popen3(cmd)
stdout.each_line do |line|
last_output = line
puts line
end
当 cmd 等于类似的东西时rspec spec/**/*.rb
那么上面的代码可以很好地运行 RSpec,只是所有输出都是单色的。我看过使用Kernel.system
相反,系统不会返回我需要确定测试是否失败/成功的输出。如何获取从 Ruby 内执行的脚本的输出(包括 ANSI 颜色)并将其输出到控制台?
我猜想 rspec 正在检查它正在写入输出的流,看看它是否是 tty(即控制台),如果不是,则禁用颜色。许多命令都可以执行此操作 - 例如 GNU ls 和 grep。由于从子进程到脚本的流不是 tty,因此颜色将被禁用。
希望 rspec 有一个标志,可以强制使用颜色,无论流类型如何。如果没有,你将不得不采取一些真正奇怪的诡计。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)