def define_rcov_tasks
begin
require 'rcov/rcovtask'
Rcov::RcovTask.new do |t|
pattern = ENV['PATTERN'] || test_globs
t.test_files = FileList[pattern]
t.verbose = true
t.rcov_opts << "--no-color"
t.rcov_opts << "--save coverage.info"
t.rcov_opts << "-x ^/"
end
task :rcov_overlay do
path = ENV["FILE"]
rcov, eol = Marshal.load(File.read("coverage.info")).last[path], 1
puts rcov[:lines].zip(rcov[:coverage]).map { |line, coverage|
bol, eol = eol, eol + line.length
[bol, eol, "#ffcccc"] unless coverage
}.compact.inspect
end
rescue LoadError
task :clobber_rcov
end
end