未验证 提交 0835527d 编写于 作者: B bogdanvlviv

`rails new` runs `rails active_storage:install`

Omit `rails activestorage:install` for jdbcmysql, jdbc and shebang tests

AppGeneratorTest#test_config_jdbcmysql_database

  rails aborted!
  LoadError: Could not load 'active_record/connection_adapters/mysql_adapter'.
  Make sure that the adapter in config/database.yml is valid.
  If you use an adapter other than 'mysql2', 'postgresql' or 'sqlite3' add
  the necessary adapter gem to the Gemfile.
  (compressed)
  bin/rails:4:in `<main>'
  Tasks: TOP => activestorage:install => environment
  (See full trace by running task with --trace)

AppGeneratorTest#test_config_jdbc_database

  rails aborted!
  LoadError: Could not load 'active_record/connection_adapters/jdbc_adapter'.
  Make sure that the adapter in config/database.yml is valid.
  If you use an adapter other than 'mysql2', 'postgresql' or 'sqlite3' add
  the necessary adapter gem to the Gemfile.
  (compressed)
  bin/rails:4:in `<main>'
  Tasks: TOP => activestorage:install => environment
  (See full trace by running task with --trace)

AppGeneratorTest#test_shebang_is_added_to_rails_file

  /home/ubuntu/.rbenv/versions/2.4.1/bin/ruby: no Ruby script found in input (LoadError)

Prevent PendingMigrationError in tests

 * Run `bin/rails db:migrate RAILS_ENV=test` in test_cases before start tests to prevent PendingMigrationError
 * FileUtils.rm_r("db/migrate")
 * --skip-active-storage

Fix failed tests in `railties/test/railties/engine_test.rb`

Related to #30111

Imporve `SharedGeneratorTests#test_default_frameworks_are_required_when_others_are_removed`

 - Explicitly skip active_storage
 - Ensure that skipped frameworks are commented
 - Ensure that default frameworks are not commented

Fix error `Errno::ENOSPC: No space left on device - sendfile`

Since `rails new` runs `rails active_storage:install`
that boots an app.

Since adding Bootsnap 0312a5c6
during booting an app, it creates the cache:

   264K    tmp/cache/bootsnap-load-path-cache
   27M     tmp/cache/bootsnap-compile-cache

* teardown_app must remove app
上级 4a835aa3
......@@ -4,8 +4,6 @@
generate "delayed_job:active_record", "--quiet"
end
rails_command("db:migrate")
initializer "activejob.rb", <<-CODE
require "#{File.expand_path("jobs_manager.rb", __dir__)}"
JobsManager.current_manager.setup
......
......@@ -18,6 +18,7 @@
require "#{dummy_app_path}/config/environment.rb"
ActiveRecord::Migrator.migrations_paths = [ Rails.root.join("db/migrate").to_s ]
ActiveRecord::Tasks::DatabaseTasks.migrate
require "rails/test_help"
Rails.backtrace_cleaner.remove_silencers!
......
......@@ -459,6 +459,12 @@ def generate_spring_binstubs
end
end
def run_active_storage
unless skip_active_storage?
rails_command "active_storage:install"
end
end
def empty_directory_with_keep_file(destination, config = {})
empty_directory(destination, config)
keep_file(destination)
......
......@@ -461,6 +461,7 @@ def finish_template
public_task :apply_rails_template, :run_bundle
public_task :run_webpack, :generate_spring_binstubs
public_task :run_active_storage
def run_after_bundle_callbacks
@after_bundle_callbacks.each(&:call)
......
......@@ -16,6 +16,8 @@ def teardown
def test_bin_setup
Dir.chdir(app_path) do
FileUtils.rm_rf("db/migrate")
app_file "db/schema.rb", <<-RUBY
ActiveRecord::Schema.define(version: 20140423102712) do
create_table(:articles) {}
......@@ -37,6 +39,8 @@ def test_bin_setup
def test_bin_setup_output
Dir.chdir(app_path) do
FileUtils.rm_rf("db/migrate")
app_file "db/schema.rb", ""
output = `bin/setup 2>&1`
......
# frozen_string_literal: true
require "isolation/abstract_unit"
require "env_helpers"
module ApplicationTests
class IntegrationTestCaseTest < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation
include ActiveSupport::Testing::Isolation, EnvHelpers
setup do
build_app
......@@ -39,13 +40,14 @@ class MailerIntegrationTest < ActionDispatch::IntegrationTest
end
RUBY
with_rails_env("test") { rails("db:migrate") }
output = rails("test")
assert_match(/0 failures, 0 errors/, output)
end
end
class IntegrationTestDefaultApp < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation
include ActiveSupport::Testing::Isolation, EnvHelpers
setup do
build_app
......@@ -66,6 +68,7 @@ def test_app_returns_action_dispatch_test_app_by_default
end
RUBY
with_rails_env("test") { rails("db:migrate") }
output = rails("test")
assert_match(/0 failures, 0 errors/, output)
end
......
......@@ -26,6 +26,7 @@ def teardown
test "config.ru can be racked up" do
Dir.chdir app_path do
FileUtils.rm_rf("db/migrate")
@app = rackup
assert_welcome get("/")
end
......
......@@ -287,6 +287,8 @@ def db_test_load_structure
ENV.delete "RAILS_ENV"
ENV.delete "RACK_ENV"
Dir.chdir(app_path) { FileUtils.rm_rf("db/migrate") }
app_file "db/schema.rb", <<-RUBY
ActiveRecord::Schema.define(version: "1") do
create_table :users do |t|
......@@ -308,6 +310,8 @@ def db_test_load_structure
end
test "db:setup sets ar_internal_metadata" do
Dir.chdir(app_path) { FileUtils.rm_rf("db/migrate") }
app_file "db/schema.rb", ""
rails "db:setup"
......
......@@ -11,6 +11,7 @@ class TestRunnerTest < ActiveSupport::TestCase
def setup
build_app
create_schema
remove_migrations
end
def teardown
......@@ -727,6 +728,10 @@ def create_schema
app_file "db/schema.rb", ""
end
def remove_migrations
Dir.chdir(app_path) { FileUtils.rm_rf("db/migrate") }
end
def create_test_file(path = :unit, name = "test", pass: true)
app_file "test/#{path}/#{name}_test.rb", <<-RUBY
require 'test_helper'
......
......@@ -8,6 +8,7 @@ class TestTest < ActiveSupport::TestCase
def setup
build_app
remove_migrations
end
def teardown
......@@ -320,6 +321,10 @@ class UserTest < ActiveSupport::TestCase
end
private
def remove_migrations
Dir.chdir(app_path) { FileUtils.rm_rf("db/migrate") }
end
def assert_unsuccessful_run(name, message)
result = run_test_file(name)
assert_not_equal 0, $?.to_i
......
......@@ -68,6 +68,7 @@
config/spring.rb
config/storage.yml
db
db/migrate
db/seeds.rb
lib
lib/tasks
......@@ -408,7 +409,7 @@ def test_config_postgresql_database
end
def test_config_jdbcmysql_database
run_generator([destination_root, "-d", "jdbcmysql"])
run_generator([destination_root, "-d", "jdbcmysql", "--skip-active-storage"])
assert_file "config/database.yml", /mysql/
assert_gem "activerecord-jdbcmysql-adapter"
end
......@@ -426,7 +427,7 @@ def test_config_jdbcpostgresql_database
end
def test_config_jdbc_database
run_generator([destination_root, "-d", "jdbc"])
run_generator([destination_root, "-d", "jdbc", "--skip-active-storage"])
assert_file "config/database.yml", /jdbc/
assert_file "config/database.yml", /mssql/
assert_gem "activerecord-jdbc-adapter"
......@@ -803,7 +804,7 @@ def test_after_bundle_callback
template
end
sequence = ["git init", "install", "exec spring binstub --all", "echo ran after_bundle"]
sequence = ["git init", "install", "exec spring binstub --all", "active_storage:install", "echo ran after_bundle"]
@sequence_step ||= 0
ensure_bundler_first = -> command, options = nil do
assert_equal sequence[@sequence_step], command, "commands should be called in sequence #{sequence}"
......@@ -813,12 +814,14 @@ def test_after_bundle_callback
generator([destination_root], template: path).stub(:open, check_open, template) do
generator.stub(:bundle_command, ensure_bundler_first) do
generator.stub(:run, ensure_bundler_first) do
quietly { generator.invoke_all }
generator.stub(:rails_command, ensure_bundler_first) do
quietly { generator.invoke_all }
end
end
end
end
assert_equal 4, @sequence_step
assert_equal 5, @sequence_step
end
def test_system_tests_directory_generated
......
......@@ -207,6 +207,7 @@ def test_controller_tests_pass_by_default_inside_mountable_engine
Dir.chdir(engine_path) do
quietly { `bin/rails g controller dashboard foo` }
quietly { `bin/rails db:migrate RAILS_ENV=test` }
assert_match(/2 runs, 2 assertions, 0 failures, 0 errors/, `bin/rails test 2>&1`)
end
end
......@@ -218,6 +219,7 @@ def test_controller_tests_pass_by_default_inside_full_engine
Dir.chdir(engine_path) do
quietly { `bin/rails g controller dashboard foo` }
quietly { `bin/rails db:migrate RAILS_ENV=test` }
assert_match(/2 runs, 2 assertions, 0 failures, 0 errors/, `bin/rails test 2>&1`)
end
end
......
......@@ -63,7 +63,7 @@ def test_name_raises_an_error_if_name_already_used_constant
end
def test_shebang_is_added_to_rails_file
run_generator [destination_root, "--ruby", "foo/bar/baz", "--full"]
run_generator [destination_root, "--ruby", "foo/bar/baz", "--full", "--skip-active-storage"]
assert_file "bin/rails", /#!foo\/bar\/baz/
end
......@@ -129,13 +129,26 @@ def test_skip_keeps
end
def test_default_frameworks_are_required_when_others_are_removed
run_generator [destination_root, "--skip-active-record", "--skip-action-mailer", "--skip-action-cable", "--skip-sprockets"]
assert_file "#{application_path}/config/application.rb", /require\s+["']rails["']/
assert_file "#{application_path}/config/application.rb", /require\s+["']active_model\/railtie["']/
assert_file "#{application_path}/config/application.rb", /require\s+["']active_job\/railtie["']/
assert_file "#{application_path}/config/application.rb", /require\s+["']action_controller\/railtie["']/
assert_file "#{application_path}/config/application.rb", /require\s+["']action_view\/railtie["']/
assert_file "#{application_path}/config/application.rb", /require\s+["']active_storage\/engine["']/
run_generator [
destination_root,
"--skip-active-record",
"--skip-active-storage",
"--skip-action-mailer",
"--skip-action-cable",
"--skip-sprockets"
]
assert_file "#{application_path}/config/application.rb", /^require\s+["']rails["']/
assert_file "#{application_path}/config/application.rb", /^require\s+["']active_model\/railtie["']/
assert_file "#{application_path}/config/application.rb", /^require\s+["']active_job\/railtie["']/
assert_file "#{application_path}/config/application.rb", /^# require\s+["']active_record\/railtie["']/
assert_file "#{application_path}/config/application.rb", /^# require\s+["']active_storage\/engine["']/
assert_file "#{application_path}/config/application.rb", /^require\s+["']action_controller\/railtie["']/
assert_file "#{application_path}/config/application.rb", /^# require\s+["']action_mailer\/railtie["']/
assert_file "#{application_path}/config/application.rb", /^require\s+["']action_view\/railtie["']/
assert_file "#{application_path}/config/application.rb", /^# require\s+["']action_cable\/engine["']/
assert_file "#{application_path}/config/application.rb", /^# require\s+["']sprockets\/railtie["']/
assert_file "#{application_path}/config/application.rb", /^require\s+["']rails\/test_unit\/railtie["']/
end
def test_generator_without_skips
......
......@@ -7,7 +7,7 @@ class TestRunnerInEngineTest < ActiveSupport::TestCase
def setup
@destination_root = Dir.mktmpdir("bukkits")
Dir.chdir(@destination_root) { `bundle exec rails plugin new bukkits --full --skip-bundle` }
Dir.chdir(@destination_root) { `bundle exec rails plugin new bukkits --full --skip-bundle --skip-active-storage` }
plugin_file "test/dummy/db/schema.rb", ""
end
......
......@@ -153,6 +153,7 @@ def build_app(options = {})
def teardown_app
ENV["RAILS_ENV"] = @prev_rails_env if @prev_rails_env
FileUtils.rm_rf(tmp_path)
end
# Make a very basic app, without creating the whole directory structure.
......
......@@ -32,6 +32,11 @@ def boot_rails
require "#{app_path}/config/environment"
end
def migrations
migration_root = File.expand_path(ActiveRecord::Migrator.migrations_paths.first, app_path)
ActiveRecord::Migrator.migrations(migration_root)
end
test "serving sprocket's assets" do
@plugin.write "app/assets/javascripts/engine.js.erb", "<%= :alert %>();"
add_to_env_config "development", "config.assets.digest = false"
......@@ -82,31 +87,30 @@ def up
end
RUBY
add_to_config "ActiveRecord::Base.timestamped_migrations = false"
boot_rails
Dir.chdir(app_path) do
output = `bundle exec rake bukkits:install:migrations`
assert File.exist?("#{app_path}/db/migrate/2_create_users.bukkits.rb")
assert File.exist?("#{app_path}/db/migrate/3_add_last_name_to_users.bukkits.rb")
assert_match(/Copied migration 2_create_users\.bukkits\.rb from bukkits/, output)
assert_match(/Copied migration 3_add_last_name_to_users\.bukkits\.rb from bukkits/, output)
assert_match(/NOTE: Migration 3_create_sessions\.rb from bukkits has been skipped/, output)
assert_equal 3, Dir["#{app_path}/db/migrate/*.rb"].length
["CreateUsers", "AddLastNameToUsers", "CreateSessions"].each do |migration_name|
assert migrations.detect { |migration| migration.name == migration_name }
end
assert_match(/Copied migration \d+_create_users\.bukkits\.rb from bukkits/, output)
assert_match(/Copied migration \d+_add_last_name_to_users\.bukkits\.rb from bukkits/, output)
assert_match(/NOTE: Migration \d+_create_sessions\.rb from bukkits has been skipped/, output)
output = `bundle exec rake railties:install:migrations`.split("\n")
migrations_count = Dir["#{app_path}/db/migrate/*.rb"].length
assert_no_match(/2_create_users/, output.join("\n"))
assert_equal migrations.length, migrations_count
bukkits_migration_order = output.index(output.detect { |o| /NOTE: Migration 3_create_sessions\.rb from bukkits has been skipped/ =~ o })
assert_not_nil bukkits_migration_order, "Expected migration to be skipped"
migrations_count = Dir["#{app_path}/db/migrate/*.rb"].length
`bundle exec rake railties:install:migrations`
output = `bundle exec rake railties:install:migrations`.split("\n")
assert_equal migrations_count, Dir["#{app_path}/db/migrate/*.rb"].length
assert_no_match(/\d+_create_users/, output.join("\n"))
bukkits_migration_order = output.index(output.detect { |o| /NOTE: Migration \d+_create_sessions\.rb from bukkits has been skipped/ =~ o })
assert_not_nil bukkits_migration_order, "Expected migration to be skipped"
end
end
......@@ -173,8 +177,8 @@ class CreateKeys < ActiveRecord::Migration::Current; end
Dir.chdir(app_path) do
output = `bundle exec rake railties:install:migrations`.split("\n")
assert_match(/Copied migration \d+_create_users\.core_engine\.rb from core_engine/, output.second)
assert_match(/Copied migration \d+_create_keys\.api_engine\.rb from api_engine/, output.last)
assert_match(/Copied migration \d+_create_users\.core_engine\.rb from core_engine/, output.first)
assert_match(/Copied migration \d+_create_keys\.api_engine\.rb from api_engine/, output.second)
end
end
......@@ -203,9 +207,12 @@ class AddFirstNameToUsers < ActiveRecord::Migration::Current
Dir.chdir(@plugin.path) do
output = `bundle exec rake app:bukkits:install:migrations`
assert File.exist?("#{app_path}/db/migrate/0_add_first_name_to_users.bukkits.rb")
assert_match(/Copied migration 0_add_first_name_to_users\.bukkits\.rb from bukkits/, output)
assert_equal 1, Dir["#{app_path}/db/migrate/*.rb"].length
migration_with_engine_path = migrations.detect { |migration| migration.name == "AddFirstNameToUsers" }
assert migration_with_engine_path
assert_match(/\/db\/migrate\/\d+_add_first_name_to_users\.bukkits\.rb/, migration_with_engine_path.filename)
assert_match(/Copied migration \d+_add_first_name_to_users\.bukkits\.rb from bukkits/, output)
assert_equal migrations.length, Dir["#{app_path}/db/migrate/*.rb"].length
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册