After Rails 2.3.2 upgrade: superclass mismatch for class TestCase (TypeError)

I upgraded a working app from rails 2.1 to 2.3.2. Now when I run rake test:units I get this error: /usr/lib/ruby/gems/1.8/gems/ activesupport-2.3.2/lib/active_support/test_case.rb:17: superclass mismatch for class TestCase (TypeError)

I generated a new test app and all tests run OK.

For the upgrade I ran rake:update and renamed the class in test_helper to ActiveSupport::TestCase. Also renamed the classes in all unit tests and to inherit from ActiveSupport::TestCase and in functional tests to inherit from ActionController::TestCase. I still could not fix it this error. I compared line by line the config files and the test_helper.rb with a brand new app and there are almost the same. Google didn't provide any clue.

Full stack trace here:

/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/ test_case.rb:17: superclass mismatch for class TestCase (TypeError)   from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'   from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'   from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/ active_support/dependencies.rb:158:in `require'   from /usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/ action_controller/test_case.rb:1   from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'   from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'   from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/ active_support/dependencies.rb:158:in `require'   from /usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/test_help.rb:6   from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'   from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'   from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/ active_support/dependencies.rb:158:in `require'   from /home/costi/workspace/r2rrails/test/test_helper.rb:3   from ./test/unit/customer_test.rb:1:in `require'   from ./test/unit/customer_test.rb:1   from /usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/ rake_test_loader.rb:5:in `load'   from /usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/ rake_test_loader.rb:5   from /usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/ rake_test_loader.rb:5:in `each'   from /usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/ rake_test_loader.rb:5 rake aborted!

I upgraded a working app from rails 2.1 to 2.3.2. Now when I run rake test:units I get this error: /usr/lib/ruby/gems/1.8/gems/ activesupport-2.3.2/lib/active_support/test_case.rb:17: superclass mismatch for class TestCase (TypeError)

I generated a new test app and all tests run OK.

For the upgrade I ran rake:update and renamed the class in test_helper to ActiveSupport::TestCase. Also renamed the classes in all unit tests and to inherit from ActiveSupport::TestCase and in functional tests to inherit from ActionController::TestCase.

Looks to me like you accidentally declared a new class called ActiveSupport::TestCase. You said your test_helper.rb is almost the same as one in a freshly generated app - what are the differences?

Fred

> I upgraded a working app from rails 2.1 to 2.3.2. Now when I run rake > test:units I get this error: /usr/lib/ruby/gems/1.8/gems/ > activesupport-2.3.2/lib/active_support/test_case.rb:17: superclass > mismatch for class TestCase (TypeError)

> I generated a new test app and all tests run OK.

> For the upgrade I ran rake:update and renamed the class in test_helper > to ActiveSupport::TestCase. Also renamed the classes in all unit tests > and to inherit from ActiveSupport::TestCase and in functional tests to > inherit from ActionController::TestCase.

Looks to me like you accidentally declared a new class called ActiveSupport::TestCase. You said your test_helper.rb is almost the same as one in a freshly generated app - what are the differences?

This is the diff between the two test_helper.rb (one being the virgin one, the second being the new one). Not much of a difference but my extra functions.

18,21d17 < # < # The only drawback to using transactional fixtures is when you actually < # need to test transactions. Since your test is bracketed by a transaction, < # any transactions started in your code will be automatically rolled back. 23a20

36a34,35

  #

37a37,56

There must have been a plugin that changed the class TestCase class. I realized that have done a search and replace in the plugins folder too for Test::Unit::TestCase and replaced it to ActiveSupport::TestCase. I did an svn revert on plugins and the rake test:units don't show the superclass mismatch for class TestCase error.