namespace :coverage do

task :clean do
  rm_f "coverage"
  rm_f "coverage.data"
  Rcov = "cd test && rcov --rails --aggregate coverage.data -Ilib:. \
                 --text-summary -x 'bundler/*,gems/*'"
end

def display_coverage
  if RUBY_PLATFORM =~ /darwin/ then
    open_cmd  = 'open'
  else
    open_cmd = 'sensible-browser'
  end
  system("#{open_cmd} test/coverage/index.html &")
end

desc 'Measures unit test coverage'
task :units => :clean do
  system("#{Rcov} --html unit/*_test.rb")
  display_coverage
end

desc 'Measures functional test coverage'
task :functionals => :clean do
  system("#{Rcov} --html functional/*_test.rb")
  display_coverage
end

desc 'Measures integration test coverage'
task :integration => :clean do
  system("#{Rcov} --html integration/*_test.rb")
  display_coverage
end

desc 'Measures perfomance test coverage'
task :perfomance => :clean do
  system("#{Rcov} --html perfomance/*_test.rb")
  display_coverage
end

desc 'All unit test coverage'
task :all => :clean do
  system("#{Rcov} --html */*_test.rb")
  display_coverage
end

end

task :coverage do

Rake::Task["coverage:all"].invoke

end