[rspec-users] strange results when using rcov with rspec

David Smalley david.smalley.lists at googlemail.com
Thu May 17 13:20:24 EDT 2007


I have some specs tucked away inside my vendor/plugins directory that  
I want to run when I run rake spec.

I've got the rake task working just fine, but for some reason rcov  
seems to choke when I try to tweak the included/excluded files to  
ignore any files in app/ but to include files in vendor/plugins/ 
plugin/app/**

The error I get is this:

No file to analyze was found. All the files loaded by rcov matched  
one of the following expressions, and were thus ignored: [/\A\/usr\/ 
lib/, /\btc_[^.]*.rb/, /_test\.rb\z/, /\btest\//, /\bvendor\//, /\A\/ 
usr\/lib\/ruby\/gems\/1\.8\/gems\/rcov\-0\.8\.0\.2\/lib\/rcov\/report 
\.rb\z/, /lib\/spec/, /bin\/spec\//, /app/, /config/] You can solve  
this by doing one or more of the following: * rename the files not to  
be ignored so they don't match the above regexps * use --include-file  
to give a list of patterns for files not to be ignored * use -- 
exclude-only to give the new list of regexps to match against *  
structure your code as follows: test/test_*.rb for the test cases lib/ 
**/*.rb for the target source code whose coverage you want making  
sure that the test/test_*.rb files are loading from lib/, e.g. by  
using the -Ilib command-line argument, adding $:.unshift File.join 
(File.dirname(__FILE__), "..", "lib") to test/test_*.rb, or running  
rcov via a Rakefile (read the RDoc documentation or README.rake in  
the source distribution). ./vendor/plugins/sor_core/app/models/ 
collection.rb:1: uninitialized constant ActiveRecord (NameError)  
from /usr/lib/ruby/gems/1.8/gems/rcov-0.8.0.2/bin/rcov:516 from /usr/ 
bin/rcov:16 rake aborted!
RSpec failures (See full trace by running task with --trace)


A snippet of the rake task I am using looks like this:

     desc "Run the specs under vendor/plugins/**/spec/models"
      Spec::Rake::SpecTask.new(:models => "db:test:prepare") do |t|
        t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
        t.spec_files = FileList["vendor/plugins/#{ENV['PLUGIN'] ||  
"**"}/spec/models/*_spec.rb"]
        t.rcov = true
        t.rcov_dir = "spec/reports/model-coverage"
        t.rcov_opts = ['--include-file', "vendor\/plugins\/#{ENV 
['PLUGIN'] || "**"}\/app\/models\/*", '--exclude', "lib\/spec,bin\/ 
spec/,app,config"]
        t.spec_opts = ["--format", "html"]
        t.out = "spec/reports/model-report/index.html"
      end

If I just run a plain old rspec with this command:

    desc "Run the specs under spec/models"
      Spec::Rake::SpecTask.new(:models => "db:test:prepare") do |t|
        t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
        t.spec_files = FileList["vendor/plugins/#{ENV['PLUGIN'] ||  
"**"}/spec/models/*_spec.rb"]
      end

Then all my tests run through just fine without any problems (but  
obviously produce no spec reports or rcov reports)

Anyone got any ideas?

Thanks,

David


More information about the rspec-users mailing list