Revert "Avoid chdir error in Railties tests on Ruby master"

This reverts commit ae5ecfe26c8fdc194d5b3cd16fd13b64574bcfd3.
This commit is contained in:
Yasuo Honda 2020-12-26 07:06:11 +09:00
parent 1ed0ece710
commit 3cafe4ad2f
7 changed files with 49 additions and 69 deletions

@ -1,13 +1,12 @@
# frozen_string_literal: true
require "isolation/abstract_unit"
require "chdir_helpers"
require "env_helpers"
module ApplicationTests
module RakeTests
class RakeDbsTest < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation, ChdirHelpers, EnvHelpers
include ActiveSupport::Testing::Isolation, EnvHelpers
def setup
build_app
@ -29,7 +28,7 @@ def set_database_url
end
def db_create_and_drop(expected_database, environment_loaded: true)
chdir(app_path) do
Dir.chdir(app_path) do
output = rails("db:create")
assert_match(/Created database/, output)
assert File.exist?(expected_database)
@ -42,7 +41,7 @@ def db_create_and_drop(expected_database, environment_loaded: true)
end
def db_create_with_warning(expected_database)
chdir(app_path) do
Dir.chdir(app_path) do
output = rails("db:create")
assert_match(/Rails couldn't infer whether you are using multiple databases/, output)
assert_match(/Created database/, output)
@ -208,7 +207,7 @@ def db_create_with_warning(expected_database)
end
def with_database_existing
chdir(app_path) do
Dir.chdir(app_path) do
set_database_url
rails "db:create"
yield
@ -224,7 +223,7 @@ def with_database_existing
end
def with_bad_permissions
chdir(app_path) do
Dir.chdir(app_path) do
skip "Can't avoid permissions as root" if Process.uid.zero?
set_database_url
@ -272,7 +271,7 @@ def with_bad_permissions
end
test "db:truncate_all truncates all non-internal tables" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
rails "db:migrate"
require "#{app_path}/config/environment"
@ -297,7 +296,7 @@ def with_bad_permissions
test "db:truncate_all does not truncate any tables when environment is protected" do
with_rails_env "production" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
rails "db:migrate"
require "#{app_path}/config/environment"
@ -345,7 +344,7 @@ def db_migrate_and_status(expected_database)
end
def db_schema_dump
chdir(app_path) do
Dir.chdir(app_path) do
args = ["generate", "model", "book", "title:string"]
rails args
rails "db:migrate", "db:schema:dump"
@ -363,7 +362,7 @@ def db_schema_dump
end
def db_schema_cache_dump(filename = "db/schema_cache.yml")
chdir(app_path) do
Dir.chdir(app_path) do
rails "db:schema:cache:dump"
cache_size = lambda { rails("runner", "p ActiveRecord::Base.connection.schema_cache.size").strip }
@ -381,7 +380,7 @@ def db_schema_cache_dump(filename = "db/schema_cache.yml")
end
test "db:schema:cache:dump with custom filename" do
chdir(app_path) do
Dir.chdir(app_path) do
File.open("#{app_path}/config/database.yml", "w") do |f|
f.puts <<-YAML
default: &default
@ -414,7 +413,7 @@ def db_schema_cache_dump(filename = "db/schema_cache.yml")
end
test "db:schema:cache:dump first config wins" do
chdir(app_path) do
Dir.chdir(app_path) do
File.open("#{app_path}/config/database.yml", "w") do |f|
f.puts <<-YAML
default: &default
@ -440,7 +439,7 @@ def db_schema_cache_dump(filename = "db/schema_cache.yml")
end
def db_fixtures_load(expected_database)
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
reload
rails "db:migrate", "db:fixtures:load"
@ -473,7 +472,7 @@ def db_fixtures_load(expected_database)
end
def db_structure_dump_and_load(expected_database)
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
rails "db:migrate", "db:structure:dump"
structure_dump = File.read("db/structure.sql")
@ -585,7 +584,7 @@ def db_structure_dump_and_load(expected_database)
end
def db_test_load_structure
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
rails "db:migrate", "db:structure:dump", "db:test:load_structure"
ActiveRecord::Base.configurations = Rails.application.config.database_configuration
@ -675,7 +674,7 @@ def db_test_load_structure
end
test "db:seed:replant truncates all non-internal tables and loads the seeds" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
rails "db:migrate"
require "#{app_path}/config/environment"
@ -708,7 +707,7 @@ def db_test_load_structure
test "db:seed:replant does not truncate any tables and does not load the seeds when environment is protected" do
with_rails_env "production" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
rails "db:migrate"
require "#{app_path}/config/environment"
@ -741,7 +740,7 @@ def db_test_load_structure
end
test "db:prepare setup the database" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
output = rails("db:prepare")
assert_match(/CreateBooks: migrated/, output)
@ -757,7 +756,7 @@ def db_test_load_structure
end
test "db:prepare does not touch schema when dumping is disabled" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
rails "db:create", "db:migrate"

@ -1,12 +1,11 @@
# frozen_string_literal: true
require "isolation/abstract_unit"
require "chdir_helpers"
module ApplicationTests
module RakeTests
class LogTest < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation, ChdirHelpers
include ActiveSupport::Testing::Isolation
def setup
build_app
@ -17,7 +16,7 @@ def teardown
end
test "log:clear clear all environments log files by default" do
chdir(app_path) do
Dir.chdir(app_path) do
File.open("config/environments/staging.rb", "w")
File.write("log/staging.log", "staging")

@ -1,13 +1,10 @@
# frozen_string_literal: true
require "isolation/abstract_unit"
require "chdir_helpers"
module ApplicationTests
module RakeTests
class RakeMigrationsTest < ActiveSupport::TestCase
include ChdirHelpers
def setup
build_app
FileUtils.rm_rf("#{app_path}/config/environments")
@ -268,7 +265,7 @@ class TwoMigration < ActiveRecord::Migration::Current
end
test "raise error on any move when current migration does not exist" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "user", "username:string", "password:string"
rails "generate", "migration", "add_email_to_users", "email:string"
rails "db:migrate"
@ -414,7 +411,7 @@ class TwoMigration < ActiveRecord::Migration::Current
test "schema generation when dump_schema_after_migration is set" do
add_to_config("config.active_record.dump_schema_after_migration = false")
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
output = rails("generate", "model", "author", "name:string")
version = output =~ %r{[^/]+db/migrate/(\d+)_create_authors\.rb} && $1
@ -425,7 +422,7 @@ class TwoMigration < ActiveRecord::Migration::Current
add_to_config("config.active_record.dump_schema_after_migration = true")
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "reviews", "book_id:integer"
rails "db:migrate"
@ -435,7 +432,7 @@ class TwoMigration < ActiveRecord::Migration::Current
end
test "default schema generation after migration" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
rails "db:migrate"
@ -445,7 +442,7 @@ class TwoMigration < ActiveRecord::Migration::Current
end
test "migration status migrated file is deleted" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "generate", "model", "user", "username:string", "password:string"
rails "generate", "migration", "add_email_to_users", "email:string"
rails "db:migrate"

@ -1,12 +1,11 @@
# frozen_string_literal: true
require "isolation/abstract_unit"
require "chdir_helpers"
module ApplicationTests
module RakeTests
class RakeMultiDbsTest < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation, ChdirHelpers
include ActiveSupport::Testing::Isolation
def setup
build_app(multi_db: true)
@ -18,7 +17,7 @@ def teardown
end
def db_create_and_drop(namespace, expected_database)
chdir(app_path) do
Dir.chdir(app_path) do
output = rails("db:create")
assert_match(/Created database/, output)
assert_match_namespace(namespace, output)
@ -34,7 +33,7 @@ def db_create_and_drop(namespace, expected_database)
end
def db_create_and_drop_namespace(namespace, expected_database)
chdir(app_path) do
Dir.chdir(app_path) do
output = rails("db:create:#{namespace}")
assert_match(/Created database/, output)
assert_match_namespace(namespace, output)
@ -56,7 +55,7 @@ def assert_match_namespace(namespace, output)
end
def db_migrate_and_migrate_status
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
rails "db:migrate"
output = rails "db:migrate:status"
@ -66,7 +65,7 @@ def db_migrate_and_migrate_status
end
def db_migrate_and_schema_cache_dump
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
rails "db:migrate"
rails "db:schema:cache:dump"
@ -76,7 +75,7 @@ def db_migrate_and_schema_cache_dump
end
def db_migrate_and_schema_cache_dump_and_schema_cache_clear
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
rails "db:migrate"
rails "db:schema:cache:dump"
@ -90,7 +89,7 @@ def db_migrate_and_schema_dump_and_load(schema_format = "ruby")
add_to_config "config.active_record.schema_format = :#{schema_format}"
require "#{app_path}/config/environment"
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
rails "db:migrate", "db:schema:dump"
@ -117,7 +116,7 @@ def db_migrate_and_schema_dump_and_load(schema_format = "ruby")
end
def db_migrate_and_schema_dump_and_load_one_database(format, database)
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
rails "db:migrate:#{database}", "db:#{format}:dump:#{database}"
@ -162,7 +161,7 @@ def db_migrate_name_dumps_the_schema(name, schema_format)
add_to_config "config.active_record.schema_format = :#{schema_format}"
require "#{app_path}/config/environment"
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
assert_not(File.exist?("db/schema.rb"))
@ -200,7 +199,7 @@ def db_test_prepare_name(name, schema_format)
add_to_config "config.active_record.schema_format = :#{schema_format}"
require "#{app_path}/config/environment"
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
rails("db:migrate:#{name}", "db:schema:dump:#{name}")
@ -222,7 +221,7 @@ def db_test_prepare_name(name, schema_format)
end
def db_migrate_namespaced(namespace)
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
output = rails("db:migrate:#{namespace}")
if namespace == "primary"
@ -234,7 +233,7 @@ def db_migrate_namespaced(namespace)
end
def db_migrate_status_namespaced(namespace)
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
output = rails("db:migrate:status:#{namespace}")
if namespace == "primary"
@ -246,7 +245,7 @@ def db_migrate_status_namespaced(namespace)
end
def db_up_and_down(version, namespace = nil)
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
rails("db:migrate")
@ -276,7 +275,7 @@ def db_up_and_down(version, namespace = nil)
end
def db_migrate_and_rollback(namespace = nil)
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
rails("db:migrate")
@ -301,7 +300,7 @@ def db_migrate_and_rollback(namespace = nil)
end
def db_migrate_redo(namespace = nil)
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
rails("db:migrate")
@ -328,7 +327,7 @@ def db_migrate_redo(namespace = nil)
end
def db_prepare
chdir(app_path) do
Dir.chdir(app_path) do
generate_models_for_animals
output = rails("db:prepare")
@ -393,7 +392,7 @@ def generate_models_for_animals
end
test "db:migrate set back connection to its original state" do
chdir(app_path) do
Dir.chdir(app_path) do
dummy_task = <<~RUBY
task foo: :environment do
Book.first
@ -410,7 +409,7 @@ def generate_models_for_animals
end
test "db:migrate:name sets the connection back to its original state" do
chdir(app_path) do
Dir.chdir(app_path) do
dummy_task = <<~RUBY
task foo: :environment do
Book.first
@ -669,7 +668,7 @@ class TwoMigration < ActiveRecord::Migration::Current
test "db:prepare setups missing database without clearing existing one" do
require "#{app_path}/config/environment"
chdir(app_path) do
Dir.chdir(app_path) do
# Bug not visible on SQLite3. Can be simplified when https://github.com/rails/rails/issues/36383 resolved
use_postgresql(multi_db: true)
generate_models_for_animals

@ -1,12 +1,11 @@
# frozen_string_literal: true
require "isolation/abstract_unit"
require "chdir_helpers"
module ApplicationTests
module RakeTests
class RakeRestartTest < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation, ChdirHelpers
include ActiveSupport::Testing::Isolation
def setup
build_app
@ -17,7 +16,7 @@ def teardown
end
test "rails restart touches tmp/restart.txt" do
chdir(app_path) do
Dir.chdir(app_path) do
rails "restart"
assert File.exist?("tmp/restart.txt")
@ -30,7 +29,7 @@ def teardown
end
test "rails restart should work even if tmp folder does not exist" do
chdir(app_path) do
Dir.chdir(app_path) do
FileUtils.remove_dir("tmp")
rails "restart"
assert File.exist?("tmp/restart.txt")

@ -1,12 +1,11 @@
# frozen_string_literal: true
require "isolation/abstract_unit"
require "chdir_helpers"
module ApplicationTests
module RakeTests
class TmpTest < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation, ChdirHelpers
include ActiveSupport::Testing::Isolation
def setup
build_app
@ -17,7 +16,7 @@ def teardown
end
test "tmp:clear clear cache, socket and screenshot files" do
chdir(app_path) do
Dir.chdir(app_path) do
FileUtils.mkdir_p("tmp/cache")
FileUtils.touch("tmp/cache/cache_file")

@ -1,12 +0,0 @@
# frozen_string_literal: true
module ChdirHelpers
private
def chdir(dir)
pwd = Dir.pwd
Dir.chdir(dir)
yield
ensure
Dir.chdir(pwd)
end
end