• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

テストの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