I am trying to configure rake to generate reports from rspec using ci_reporter for Hudson.
Using the rake file below, the same test that passes when run with the spec command fails running with the new rake file. First there are many warnings (which I omitted because there are too many of them to display).
It appears the ci_reporter is generating reports but they are empty.
Any help would be very appreciated!
Thanks!
-Laura
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'rake/packagetask'
require 'spec/version'
require 'spec/rake/spectask'
require 'rcov'
require 'tasks/rails'
gem 'ci_reporter'
require 'ci/reporter/rake/rspec'
def rspec_report_path
"reports/rspec/"
end
namespace :ci do
task :pre_ci do
ENV["CI_REPORTS"] = rspec_report_path
gem 'ci_reporter'
require 'ci/reporter/rake/rspec'
end
task :rspec => [:pre_ci, "ci:setup:rspec"]
desc "do rspec tests and test coverage"
@suite = Spec::Rake::SpecTask.new('rspec') do |t|
# t.spec_files = FileList['spec/**/*_spec.rb']
t.spec_files = FileList['spec/models/assignment_spec.rb']
t.warning = true
t.rcov = false
t.rcov_dir = 'coverage'
t.fail_on_error = false
t.rcov_opts = ['--exclude', "kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}", '-I', 'lib/']
end
end
Error:
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/whiny_nil.rb:52:in `method_missing': undefined method `metadata' for nil:NilClass (NoMethodError)
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/rspec.rb:46:in `name'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:146
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:140:in `each'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:140
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `call'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `_nested_structures'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:58:in `method_missing'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:136:in `to_xml'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:86
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:85:in `each'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:85
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `call'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `_nested_structures'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:58:in `method_missing'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:84:in `to_xml'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/report_manager.rb:18:in `write_report'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/report_manager.rb:17:in `open'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/report_manager.rb:17:in `write_report'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/rspec.rb:203:in `write_report'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/rspec.rb:207:in `new_suite'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/rspec.rb:114:in `example_group_started'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/reporter.rb:19:in `example_group_started'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/reporter.rb:18:in `each'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/reporter.rb:18:in `example_group_started'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/example/example_group_methods.rb:115:in `notify'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/example/example_group_methods.rb:96:in `run'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/example_group_runner.rb:23:in `run'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/example_group_runner.rb:22:in `each'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/example_group_runner.rb:22:in `run'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/options.rb:153:in `run_examples'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner.rb:61:in `run'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner.rb:45
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.14/lib/active_support/whiny_nil.rb:52:in `method_missing': undefined method `metadata' for nil:NilClass (NoMethodError)
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/rspec.rb:46:in `name'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:146
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:140:in `each'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:140
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `call'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `_nested_structures'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:58:in `method_missing'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:136:in `to_xml'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:86
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:85:in `each'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:85
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `call'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:134:in `_nested_structures'
from /usr/lib/ruby/gems/1.8/gems/builder-2.1.2/lib/builder/xmlbase.rb:58:in `method_missing'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/test_suite.rb:84:in `to_xml'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/report_manager.rb:18:in `write_report'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/report_manager.rb:17:in `open'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/report_manager.rb:17:in `write_report'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/rspec.rb:203:in `write_report'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/rspec.rb:207:in `new_suite'
from /usr/lib/ruby/gems/1.8/gems/ci_reporter-1.7.0/lib/ci/reporter/rspec.rb:114:in `example_group_started'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/reporter.rb:19:in `example_group_started'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/reporter.rb:18:in `each'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/reporter.rb:18:in `example_group_started'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/example/example_group_methods.rb:115:in `notify'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/example/example_group_methods.rb:96:in `run'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/example_group_runner.rb:23:in `run'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/example_group_runner.rb:22:in `each'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/example_group_runner.rb:22:in `run'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/options.rb:153:in `run_examples'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/lib/spec/runner/command_line.rb:9:in `run'
from /usr/lib/ruby/gems/1.8/gems/rspec-1.3.2/bin/spec:5
from /usr/bin/rcov:508:in `load'
from /usr/bin/rcov:508
Recording test results
The exception was a bug in ci_reporter that was fixed on 21 Feb 2012 (see https://github.com/nicksieger/ci_reporter/commit/48d7389f19bace8e7765d889bcd4425e3aab699b) but that fix is not part of any released version as of 26 April 2012. The solution until it gets released is to get the gem from github. If you’re using bundler, change your Gemfile entry to: