David Smalley
2007-May-17 17:20 UTC
[rspec-users] strange results when using rcov with rspec
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
