mirror of
https://github.com/paper-trail-gem/paper_trail.git
synced 2022-11-09 11:33:19 -05:00
5c95fca5cf
After years of providing an awesome service for free, which we are very grateful for, TravisCI will be dropping their free plan on Dec 31. So, we are switching to GHA. Drops multi-db (foo/bar) tests. Managing three databases per RDBMS was turning into a huge hassle, and they needed to be rewritten anyway for rails 6, per Eileen's talk.
73 lines
2.2 KiB
Ruby
73 lines
2.2 KiB
Ruby
# 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]
|