🕷 zenspider.com

by ryan davis

Looking for the Ruby Quickref?

DB population: more autotest vs. rake issues.

Published 2007-06-22 @ 11:53

Tagged zentest, rails, ruby, minitest

I use autotest almost exclusively. It is very rare that I run tests via rake these days so it is embarrassing when something fails via rake and not via autotest. It makes me look bad.

My latest snafu was regarding fixtures. See, the project prepopulates the test db and I started migrating them away from using the fixture calls they were using. When I use my typical rake nuke rule, it’ll scrap and rebuild everything, including repopulating the db. autotest is happy as a clam. But rails’ test:units does a prepare each time, nuking anything we put in there. I’ve seen a lot of weird hacks to deal with this, but I just came up with one I finally like:

  # ensure we always populate the test db
  %w(units functionals integration).each do |type|
    Rake::Task["test:#{type}"].prerequisites.push "db:test:populate"

db:test:populate is up to you, do what you need to do. For us, it just ensures we do a db:fixtures:load with RAILS_ENV=test.

This way, no matter HOW you run your tests, either by default rule or by specifying one of the phases you’re interested in, you’ll always do that populate.