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.