rcov
rcov 試し中。
インストール:
$ sudo gem install rcov
RAILS_ROOT で、
$ rcov test/**/*_test.rb
で RAILS_ROOT/coverage/ に結果の HTML 群が吐かれる。
けど、Rails 本体(ActiveRecordとか)もテスト吐かれて、ちょー大量のファイルが生成されるんですけど! --rails オプションつけてみてもダメ。
rails_rcov プラグインなら大丈夫かな?と試し中。・・・ダメだった。
ちょー遅いんですけど。週一実行とかになるのかなぁ・・・
できた。-x オプションで、/var/lib/gems を対象から外せば ok だった。
$ rcov -x /var/lib/gems --rails test/**/*_test.rb
Debian の人で RubyGems を apt で入れてる人は注意!
これで毎日実行できるぞ!
テキストでも吐けるけど、HTMLのが見やすいので、--no-html はつけない。
colinux で開発してるので、
$ ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => 'coverage'); trap('INT'){ s.shutdown }; s.start"
って感じで、ウェブサーバを立ち上げて閲覧。
めんどいので script/rcov-server 作った。
#!/usr/bin/env ruby require "webrick" __DIR__ = File.dirname(__FILE__) s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => "#{__DIR__}/../coverage") trap('INT'){ s.shutdown } s.start
http://colinux:8000/ とかでアクセス。
rails_rcov プラグインは rake の引数が気に入らないのと、本家の例は、units/functional/integration でバラバラに index.html が作られたり、test/ 以下に生成されたりして気持ち悪いので、自前で lib/tasks/rcov.rake 作った。
namespace :test do namespace :coverage do desc "Delete coverage files" task :clean do rm_rf "coverage" end end desc "Generage coverage files" task :coverage => "test:coverage:clean" do sh "rcov -x /var/lib/gems --rails test/**/*_test.rb" end end
$ rake test:coverage $ rake test:coverage:clean
の2つ。