Sha256: a27ada0c5943331da573a34e78fb2047bc2f26b71f9c7bd62e76a9945d47f8d9

Contents?: true

Size: 1.18 KB

Versions: 13

Compression:

Stored size: 1.18 KB

Contents

namespace :spec do
  namespace :db do
    databases = [:postgresql, :mysql, :sqlite3]

    desc "Run specs against all databases"
    task :all do
      failed = false

      databases.each do |database|
        test_against database
      end
    end

    databases.each do |database|
      desc "Run specs against '#{database}' database"
      task database do
        return test_against database
      end
    end

    def test_against(kind)
      sample = Rails.root + "config/database~#{kind}.sample.yml"
      custom = Rails.root + "config/database~custom.yml"
      backup = Rails.root + "config/database~custom.yml.backup"

      if custom.exist?
        mv custom, backup
      end

      cp sample, custom

      succeeded = nil

      begin
        Dir.chdir(Rails.root) do
          puts
          puts "## Database: #{kind}"
          succeeded = system "unset BUNDLE_GEMFILE BUNDLE_BIN_PATH RUBYOPT; bundle --quiet && rake db:create:all db:migrate db:test:prepare spec"
        end
      ensure
        rm custom

        if backup.exist?
          mv backup, custom
        end
      end

      unless succeeded
        raise "Tests failed against database '#{kind}'"
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
calagator-1.0.0 lib/tasks/spec_db.rake
grokus-1.0.0.9 lib/tasks/spec_db.rake
grokus-1.0.0.8 lib/tasks/spec_db.rake
grokus-1.0.0.7 lib/tasks/spec_db.rake
grokus-1.0.0.6 lib/tasks/spec_db.rake
grokus-1.0.0.5 lib/tasks/spec_db.rake
grokus-1.0.0.3 lib/tasks/spec_db.rake
grokus-1.0.0.2 lib/tasks/spec_db.rake
grokus-1.0.0.1 lib/tasks/spec_db.rake
calagator-1.0.0.rc3 lib/tasks/spec_db.rake
calagator-1.0.0.rc2 lib/tasks/spec_db.rake
calagator-1.0.0.rc1 lib/tasks/spec_db.rake
calagator-0.0.1.pre1 lib/tasks/spec_db.rake