1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
# frozen_string_literal: true
ENV["DB"] ||= "sqlite"
require "fileutils"
require "bundler"
Bundler::GemHelper.install_tasks
desc "Copy the database.DB.yml per ENV['DB']"
task :install_database_yml do
puts format("installing database.yml for %s", ENV["DB"])
# It's tempting to use `git clean` here, but this rake task will be run by
# people working on changes that haven't been committed yet, so we have to
# be more selective with what we delete.
::FileUtils.rm("spec/dummy_app/db/database.yml", force: true)
FileUtils.cp(
"spec/dummy_app/config/database.#{ENV['DB']}.yml",
"spec/dummy_app/config/database.yml"
)
end
desc "Delete generated files and databases"
task :clean do
puts format("dropping %s database", ENV["DB"])
case ENV["DB"]
when "mysql"
# TODO: only works locally. doesn't respect database.yml
system "mysqladmin drop -f paper_trail_test > /dev/null 2>&1"
when "postgres"
# TODO: only works locally. doesn't respect database.yml
system "dropdb --if-exists paper_trail_test > /dev/null 2>&1"
when nil, "sqlite"
::FileUtils.rm(::Dir.glob("spec/dummy_app/db/*.sqlite3"))
else
raise "Don't know how to clean specified RDBMS: #{ENV['DB']}"
end
end
desc <<~EOS
Write a database.yml for the specified RDBMS, and create database. Does not
migrate. Migration happens later in spec_helper.
EOS
task prepare: %i[clean install_database_yml] do
puts format("creating %s database", ENV["DB"])
case ENV["DB"]
when "mysql"
# TODO: only works locally. doesn't respect database.yml
system "mysqladmin create paper_trail_test"
when "postgres"
# TODO: only works locally. doesn't respect database.yml
system "createdb paper_trail_test"
when nil, "sqlite"
# noop. test.sqlite3 will be created when migration happens
nil
else
raise "Don't know how to create specified DB: #{ENV['DB']}"
end
end
require "rspec/core/rake_task"
desc "Run tests on PaperTrail with RSpec"
task(:spec).clear
RSpec::Core::RakeTask.new(:spec) do |t|
t.verbose = false # hide list of specs bit.ly/1nVq3Jn
end
require "rubocop/rake_task"
RuboCop::RakeTask.new
desc "Default: run all available test suites"
task default: %i[rubocop prepare spec]
|