テストのC0カバレッジを上げるために、
何度もrcovを手で実行していたのですが、
テストの数が多くなってくると非常に時間がかかって面倒なため、
自動化するRakeタスクを作りました。

ruby>>
namespace :rcov do
desc 'Automate rcov'
task :auto do
interval = (ENV['INTERVAL'] || 10).to_f
org_path = File.join(RAILS_ROOT, 'coverage', '*')
pub_path = File.join(RAILS_ROOT, 'public', 'coverage')
sh "mkdir -p #{pub_path}"
loop do
Rake::Task['spec:rcov'].execute nil
sh "cp -Rf #{org_path} #{pub_path}"
sleep interval
end
end
end
<<--

使い方はRAILS_ROOTで以下のコマンドを実行するだけです。

pre>>
% rake rcov:auto INTERVAL=10
<<--

指定した時間間隔(秒)ごとにspec:rcovを実行します。
実行した結果はRSpecのデフォルトでは
RAILS_ROOT/coverageに出力されるので、これを
public/coverageに上書きコピーしています。
あとは、ブラウザで/coverageを見ればOKです。

public/coverageは間違ってデプロイしないように.gitignoresvn:ignoreに登録しておきましょう。

posted by genki genki on Sat 5 Jul 2008 at 03:53 with 0 comments