== Code coverage analysis automation with Rake
Since 0.4.0, rcov features a Rcov::RcovTask task for rake
which can be used to automate test coverage analysis. Basic usage is as
follows:
require 'rcov/rcovtask'
Rcov::RcovTask.new do |t|
t.test_files = FileList['test/test*.rb']
# t.verbose = true # uncomment to see the executed command
end
This will create by default a task named rcov, and also a task to
remove the output directory where the XHTML report is generated.
The latter will be named clobber_rcob, and will be added to the main
clobber target.
=== Passing command line options to rcov
You can provide a description, change the name of the generated tasks (the
one used to generate the report(s) and the clobber_ one) and pass options to
rcov:
desc "Analyze code coverage of the unit tests."
Rcov::RcovTask.new(:coverage) do |t|
t.test_files = FileList['test/test*.rb']
t.verbose = true
## get a text report on stdout when rake is run:
t.rcov_opts << "--text-report"
## only report files under 80% coverage
t.rcov_opts << "--threshold 80"
end
That will generate a coverage task and the associated
clobber_coverage task to remove the directory the report is dumped
to ("coverage" by default).
You can specify a different destination directory, which comes handy if you
have several RcovTasks; the clobber_* will take care of
removing that directory:
desc "Analyze code coverage for the FileStatistics class."
Rcov::RcovTask.new(:rcov_sourcefile) do |t|
t.test_files = FileList['test/test_FileStatistics.rb']
t.verbose = true
t.rcov_opts << "--test-unit-only"
t.output_dir = "coverage.sourcefile"
end
Rcov::RcovTask.new(:rcov_ccanalyzer) do |t|
t.test_files = FileList['test/test_CodeCoverageAnalyzer.rb']
t.verbose = true
t.rcov_opts << "--test-unit-only"
t.output_dir = "coverage.ccanalyzer"
end
=== Options passed through the rake command line
You can override the options defined in the RcovTask by passing the new
options at the time you invoke rake.
The documentation for the Rcov::RcovTask explains how this can be done.