The test setup is a 'lib' folder containing a single file which defines a class, the folders 'test' and 'test/sub_test', with 'sub_test' containing the single 'test_example_lib.rb' and a Rakefile like this:
require 'rcov/rcovtask' task :default => [:rcov] desc "RCov" Rcov::RcovTask.new do | t | t.test_files = FileList[ 'test/**/test_*.rb' ] end
#rake (in /Users/stephan/tmp/rcov_example) rm -r coverage Loaded suite /Users/stephan/.rvm/gems/ruby-1.8.7-p174/bin/rcov Started . Finished in 0.000508 seconds. 1 tests, 2 assertions, 0 failures, 0 errors +----------------------------------------------------+-------+-------+--------+ | File | Lines | LOC | COV | +----------------------------------------------------+-------+-------+--------+ |...ms/rcov-0.9.8/lib/rcov/code_coverage_analyzer.rb | 271 | 156 | 5.1% | |...ems/rcov-0.9.8/lib/rcov/differential_analyzer.rb | 116 | 82 | 9.8% | |lib/example_lib.rb | 16 | 11 | 72.7% | +----------------------------------------------------+-------+-------+--------+ |Total | 403 | 249 | 9.6% | +----------------------------------------------------+-------+-------+--------+ 9.6% 3 file(s) 403 Lines 249 LOC
Why is RCov itself analysed here? I'd expect that (and it doesn't happen when using 'rvm use system'). In fact it seems to be due to me using a Ruby installed via rvm.
Add some exclusion in rcov :
--exclude /gems/,/Library/,/usr/,spec,lib/tasks
require 'rcov/rcovtask'
task :default => [:rcov]
desc "RCov"
Rcov::RcovTask.new do | t |
t.test_files = FileList[ 'test/**/test_*.rb' ]
t.rcov_opts << '--exclude /gems/,/Library/,/usr/,spec,lib/tasks'
end