> I like that idea. Since most people just run all tests inside a big
> transaction anyway, there should rarely be changes to the fixtures or
> the database. Keeping those stable when that's the case would be
> great.

The approach that's working for us really well right now:

1. Make a "fixtures or DB changed!" checksum and stash it. I'm using a  
sorted list of the full paths and mtimes of test/fixtures/**/*.yml,  
plus the mtime of schema.rb (since it's regenerated any time a  
migration runs).

1a. (there's a db:fixtures:reset task to kill this stash)

2. Regenerate and compare checksums on every test run. Different?  
Reload all fixtures: we're not specifying subsets anywhere. Same? No  
load necessary.

Preloading/change tracking like this has made autotest viable again,  
which has been pretty awesome.

> But we certainly should think about the transaction case. It's quite
> valuable to be able to test transactions. So perhaps we can have a
> special block or something that you could wrap around your test if it
> uses transactions and make sure that all pre- and post-cleanup is
> done. It'll make that one test run slowly, but that's fine.

isolate_fixtures(:optional, :list, :of, :fixtures) do
   def test_something_involving_transactions
     # ...
   end
end

Something like that?


~ j.


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to