6

ファイルが変更されたときに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、システムは、テストが失敗したか成功したかを判断するために必要な出力を返しません。ANSIカラーを含むRuby内から実行されるスクリプトから出力を取得し、これをコンソールに出力するにはどうすればよいですか?

4

3 に答える 3

6

rspec は、出力を書き込んでいるストリームを調べて、それが tty (つまりコンソール) かどうかを確認し、そうでない場合は色を無効にしていると思います。GNU ls や grep など、多くのコマンドがこれを行います。子プロセスからスクリプトへのストリームは tty ではないため、色は無効になります。

願わくば、rspec に、ストリームの種類に関係なく、強制的に色を使用するフラグがあることを願っています。そうでない場合は、本当に奇妙な stty シェナニガンに訴える必要があります。

于 2011-04-03T01:02:36.690 に答える
5

カラー出力を使用するかどうかを決定する前に、rspecツールが端末上で対話的に実行されているか、スクリプトから自動的に実行されているかを確認している可能性があります。

ドキュメント--colorには、コマンドラインオプションで色を強制できると書かれています。

試してください: rspec --color spec/**/*.rb.

于 2011-04-03T01:01:09.637 に答える