Path: | README.rake |
Last Update: | Tue Feb 01 14:02:59 +0000 2011 |
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.
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
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.