テストのC0カバレッジを上げるために、 何度もrcovを手で実行していたのですが、 テストの数が多くなってくると非常に時間がかかって面倒なため、 自動化するRakeタスクを作りました。
1 namespace :rcov do 2 desc 'Automate rcov' 3 task :auto do 4 interval = (ENV['INTERVAL'] || 10).to_f 5 org_path = File.join(RAILS_ROOT, 'coverage', '*') 6 pub_path = File.join(RAILS_ROOT , 'public', 'coverage') 7 sh "mkdir -p #{pub_path}" 8 loop do 9 Rake::Task['spec:rcov'].execute nil 10 sh "cp -Rf #{org_path} #{pub_path}" 11 sleep interval 12 end 13 end 14 end
使い方はRAILS_ROOT
1 % rake rcov:auto INTERVAL=10
指定した時間間隔(秒)ごとにspec:rcov
を実行します。
実行した結果はRSpecのデフォルトでは
RAILS_ROOT
に出力されるので、これを
public/cov
に上書きコピーしています。
あとは、ブラウザで/coverage
を見ればOKです。
public/cov
は間違ってデプロイしないように.gitignore
やsvn:ignore
に登録しておきましょう。
posted by
genki
on Sat 5 Jul 2008
at 03:43