Funny behavior with Fixtures... on Ubuntu..

Hey Guys,

I've got a test class that loads a bunch of fixtures. My understanding is that fixtures are reloaded between each test... and I even have the following two method calls at the top of my test class to make doubly sure...

class TaskTest < Test::Unit::TestCase

  self.use_transactional_fixtures = true   self.use_instantiated_fixtures = false

When I run my tests individually... as in:

ruby unit/task_test.rb --name test_update

The tests run successfully to completion. However, when I try to run the entire test file in one go, I get failures. As in:

ruby unit/task_test.rb

  8) Error:      test_update(TaskTest):      ActiveRecord::RecordNotFound: Couldn't find Task with ID=2

I query the database and the record task.id = 2 is indeed missing. Strangely enough this test file works perfectly on Windows.

Anyone have any ideas? I'm guessing there's an issue with my Linux/Ubuntu mysql adapter... but I'm not sure how to confirm... Any help would be very much appreciated.

Sonny.

I can't give you any help, unfortunately, except to note that I've observed similar failures on my system, which is Ubuntu also. I haven't had a chance to chase down WTF is going on, though, and I doubt I'll be in much of a position to do so in the near future. But at least you know you're not alone now. <grin>

- Matt

This topic is probably better discussed on the general rails-talk forum rather than core, but

One thought is to check that you are using a mysql table type which supports transactions. Innodb does, myisam (which is or used to be the default for mysql) does not.

Try setting use_transactional_fixtures to fall and see if it makes a difference.

s/fall/false/

Rick Denatale wrote:

One thought is to check that you are using a mysql table type which supports transactions. Innodb does, myisam (which is or used to be the default for mysql) does not.

Awesome, that did the trick. It appears the Debian/Ubuntu release for mySQL 5 has the table type default to myIsam.

Sonny.