Rspec on Autotest::Screen でテスト結果の表示がおかしいときの対処法
書いた人: noriaki 2007,08月18日(土) 21:05
ZenTest - autotestに同梱されているAutotest::Screenを使うと、Screenのステータスにテスト状況をリアルタイムに出せる。
ただ、ZenTest (3.6.0)のものは結果をうまく拾えていないようだったので少し書き換えてみた。
Autotest::Screenが便利な件について。 (SaikyoLine.jp)
Screenを導入したのならRspecで行っているテストのときにも便利になってほしいということで,上記のページを参考に.autotestを作ったのですが,私の環境では結果を上手く拾えなかったので対処療法的に書き直してみました.
環境
- ZenTest-3.6.1
- GNU Screen-4.0.2
- Rspec(on Rails)-1.0.8
.autotest
追記:failとerrorの数を求めるロジックが間違っていましたので修正しました.
# Array#transposeなんて初めて使いました(笑)
Autotest::Screen.statusline = "%{=r dd} %-w%{=b dd}[%n] %t %{-}%+w %="
class Autotest::Screen
Autotest.add_hook :run_command do |at|
message 'Testing...' if execute?
end
Autotest.add_hook :ran_command do |at|
if execute? then
output = at.results.join
failed = output.scan(/^\s*?\d+\)\n(?:.*? (FAILED)$|.*?(Error) )/)
if failed.size == 0 then
message "All Green", :green
else
f,e = failed.transpose.map{|e| e.compact}
message "Red F:#{f.size} E:#{e.size}", :red
end
end
end
end変更点
$ diff .autotest.orign .autotest
--- .autotest.orign 2007-08-18 19:10:57.000000000 +0900
+++ .autotest 2007-08-18 20:39:41.000000000 +0900
@@ -54,12 +54,12 @@
Autotest.add_hook :ran_command do |at|
if execute? then
output = at.results.join
- failed = output.scan(/^\s+\d+\) (Failure|Error):\n(.*?)\((.*?)\)/)
+ failed = output.scan(/^\s*?\d+\)\n(?:.*? (FAILED)$|.*?(Error) )/)
if failed.size == 0 then
message "All Green", :green
else
- f,e = failed.partition { |s| s[0] =~ /Failure/ }
+ f,e = failed.transpose.map{|e| e.compact}
message "Red F:#{f.size} E:#{e.size}", :red
end
end
end私の環境ではどうして動かなくなったのでしょうか.謎です. Rspec on Railsがなにか悪さをしてるのでしょうか.
なお,この対処法はかなりやっつけ仕事です.なので,エラーじゃないのにScreenが赤くなったり,エラーが出ているのにScreenは緑だったりする可能性がありますので,ご了承ください.
例えば,specファイルに以下のような記述があると結果にかかわらずエラー数が1増えてしまうと思います.
it "should have 1 Error in 'hoge'." doこちらはErrorという言葉をspecの説明文(?)のところに書かないことで回避できると思います.
railsタグの付いた他のエントリ
- Award on Rails 2007 で「Gigazinize Tools - Image」がパソナテック賞をいただきました
- [Rails meets jQuery] Rails用jQueryプラグイン「jq4r」
- [Rails meets jQuery] jQuery の AJAX(JSONP) を使ってRailsの404ページを和ませる方法
- 「Gigazinize Tools - Image」というWebサービスを公開しました
- Gigazinize のなかみ

