I just updated all my gems and I'm finding that I'm getting errors when trying to run Test::Unit tests. I'm getting the error copied below. That comes from creating new, empty Rails project, scaffolding a simple model, and running rake test
.
Tried Googling "uninitialized constant" and TestResultFailureSupport. The only thing I found was this bug report from 2007.
I'm using OS X.
These are the gems that I updated right before the tests stopped working:
$ sudo gem outdated
Password:
RedCloth (4.2.1 < 4.2.2)
RubyInline (3.8.1 < 3.8.2)
ZenTest (4.1.1 < 4.1.3)
bluecloth (2.0.4 < 2.0.5)
capistrano (2.5.5 < 2.5.8)
haml (2.0.9 < 2.2.1)
hoe (2.2.0 < 2.3.2)
json (1.1.6 < 1.1.7)
mocha (0.9.5 < 0.9.7)
rest-client (1.0.2 < 1.0.3)
thoughtbot-factory_girl (1.2.1 < 1.2.2)
thoughtbot-shoulda (2.10.1 < 2.10.2)
Has anyone else seen this issue? Any troubleshooting suggestions?
UPDATE
On a hunch I downgraded ZenTest from 4.1.3 back to 4.1.1 and now everything works again.
Still curious to know if anyone else has seen this or has any interesting comments or insights.
$ rake test
(in /Users/me/foo)
/usr/local/bin/ruby -I"lib:test" "/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/unit/helpers/users_helper_test.rb" "test/unit/user_test.rb"
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:105:in `const_missing': uninitialized constant Test::Unit::TestResult::TestResultFailureSupport (NameError)
from /usr/local/lib/ruby/gems/1.8/gems/test-unit-2.0.2/lib/test/unit/testresult.rb:28
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:158:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/test-unit-2.0.2/lib/test/unit/ui/testrunnermediator.rb:9
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:158:in `require'
... 6 levels...
from /usr/local/lib/ruby/1.8/test/unit/autorunner.rb:214:in `run'
from /usr/local/lib/ruby/1.8/test/unit/autorunner.rb:12:in `run'
from /usr/local/lib/ruby/1.8/test/unit.rb:278
from /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
/usr/local/bin/ruby -I"lib:test" "/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/functional/users_controller_test.rb"
I ran into this today on Mac OS X 10.6. My solution is as follows:
Here is the recipe for test_unit 2.0.7 on Rails 2.3.5:
In config/environments/test.rb:
In test_helper.rb, add
require 'test/unit'
, immediately afterrequire 'test_help'
So it looks like this:
If you receive this error:
%': one hash required (ArgumentError)
, upgrade gemi18n
to v0.3.6.As this link suggests http://floehopper.lighthouseapp.com/projects/22289-mocha/tickets/50 it may happen due to preliminary initialization of mocha lib. To prevent it from happeing it is advisable to add line
to config/environment.rb
This apparently comes from using Test::Unit 2.0 with the old Test::Unit. According to Kouhei Sutou on RubyForge, it can be fixed by calling
gem 'test-unit'
before yourequire 'test/unit'
.Same issue with me too. Nothing above mentioned worked for me except downgrading test-unit back to 1.2.3 I'm missing the coloring of the test-unit 2.x
If you add the following line to your environment.rb, or your config/environments/test.rb this should fix the issue
I Believe you will need to add it before the mocha line if you use mocha.