README.rant

Path: README.rant
Last Update: Tue Feb 01 14:02:59 +0000 2011

Code coverage analysis automation with Rant

Since 0.5.0, rcov features a Rcov generator for eant which can be used to automate test coverage analysis. Basic usage is as follows:

  require 'rcov/rant'

  desc "Create a cross-referenced code coverage report."
  gen Rcov do |g|
    g.test_files = sys['test/test*.rb']
  end

This will create by default a task named rcov.

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 "Create cross-referenced code coverage report."
  gen Rcov, :coverage do |g|
    g.test_files = sys['test/test*.rb']
    g.rcov_opts << "--threshold 80" << "--callsites"
  end

That will generate a coverage task.

You can specify a different destination directory, which comes handy if you have several rcov tasks:

  desc "Analyze code coverage for the FileStatistics class."
  gen Rcov, :rcov_sourcefile do |g|
    g.libs << "ext/rcovrt"
    g.test_files = sys['test/test_FileStatistics.rb']
    g.rcov_opts << "--test-unit-only"
    g.output_dir = "coverage.sourcefile"
  end

  desc "Analyze code coverage for CodeCoverageAnalyzer."
  gen Rcov, :rcov_ccanalyzer do |g|
    g.libs << "ext/rcovrt"
    g.test_files = sys['test/test_CodeCoverageAnalyzer.rb']
    g.rcov_opts << "--test-unit-only"
    g.output_dir = "coverage.ccanalyzer"
  end

Options specified passed to the generator

The Rcov generator recognizes the following options:

libs:directories to be added to the $LOAD_PATH
rcov_opts:array of options to be passed to rcov
test_files:files to execute
test_dirs:directories where to look for test files automatically
pattern:pattern for automatic discovery of unit tests to be executed
output_dir:directory where to leave the generated reports

test_files overrides the combination of test_dirs and pattern.

Options passed through the rake command line

You can override the options defined in the Rcov tasks by specifying them using environment variables at the time rant is executed.

  RCOVPATH=/my/modified/rcov rant rcov       # use the specified rcov executable
  RCOVOPTS="--no-callsites -x foo" rant rcov # pass those options to rcov

[Validate]