From a70d89c5190d3cc701fcf415dc6c61ab69121069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Mon, 13 May 2024 14:28:25 -0400 Subject: [PATCH] Merge pull request #51766 from Shopify/revert-actionable-errors-retry Revert "Merge pull request #50941 from andrewn617/actionable-cli" --- railties/lib/rails/command/base.rb | 20 ---------- .../lib/rails/commands/test/test_command.rb | 4 +- .../lib/rails/testing/maintain_test_schema.rb | 8 +++- railties/test/application/test_test.rb | 39 ------------------- 4 files changed, 7 insertions(+), 64 deletions(-) diff --git a/railties/lib/rails/command/base.rb b/railties/lib/rails/command/base.rb index 67950cde7b9cc..ee6e04998733e 100644 --- a/railties/lib/rails/command/base.rb +++ b/railties/lib/rails/command/base.rb @@ -179,26 +179,6 @@ def invoke_command(command, *) # :nodoc: ensure @current_subcommand = original_subcommand end - - protected - def with_actionable_errors_retried(&block) - block.call - rescue ActiveSupport::ActionableError => e - puts e.to_s.strip - exit 1 unless tty? - - ActiveSupport::ActionableError.actions(e).each_key do |action_name| - if yes? "#{action_name}? [Yn]" - ActiveSupport::ActionableError.dispatch(e, action_name) - return with_actionable_errors_retried(&block) - end - end - exit 1 - end - - def tty? - STDOUT.tty? - end end end end diff --git a/railties/lib/rails/commands/test/test_command.rb b/railties/lib/rails/commands/test/test_command.rb index 0e592963adc0b..e183ddf0f3406 100644 --- a/railties/lib/rails/commands/test/test_command.rb +++ b/railties/lib/rails/commands/test/test_command.rb @@ -30,9 +30,7 @@ def perform(*args) Rails::TestUnit::Runner.parse_options(args) run_prepare_task if self.args.none?(EXACT_TEST_ARGUMENT_PATTERN) - with_actionable_errors_retried do - Rails::TestUnit::Runner.run(args) - end + Rails::TestUnit::Runner.run(args) rescue Rails::TestUnit::InvalidTestError => error say error.message end diff --git a/railties/lib/rails/testing/maintain_test_schema.rb b/railties/lib/rails/testing/maintain_test_schema.rb index 34991c64032f4..3197b77d10928 100644 --- a/railties/lib/rails/testing/maintain_test_schema.rb +++ b/railties/lib/rails/testing/maintain_test_schema.rb @@ -1,8 +1,12 @@ # frozen_string_literal: true if defined?(ActiveRecord::Base) - - ActiveRecord::Migration.maintain_test_schema! + begin + ActiveRecord::Migration.maintain_test_schema! + rescue ActiveRecord::PendingMigrationError => e + puts e.to_s.strip + exit 1 + end if Rails.configuration.eager_load ActiveRecord::Base.descendants.each do |model| diff --git a/railties/test/application/test_test.rb b/railties/test/application/test_test.rb index 8cb6e8116b7f4..30f92fbe98106 100644 --- a/railties/test/application/test_test.rb +++ b/railties/test/application/test_test.rb @@ -345,45 +345,6 @@ def self.load_schema! assert_unsuccessful_run "models/user_test.rb", "SCHEMA LOADED!" end - def test_actionable_command_line_error_with_tty - rails "generate", "scaffold", "user", "name:string" - app_file "config/initializers/thor_yes.rb", <<-RUBY - Rails::Command::Base.class_eval <<-INITIALIZER - def yes?(statement, color = nil) - raise ArgumentError unless statement == "Run pending migrations? [Yn]" - true - end - - def tty? - true - end - INITIALIZER - RUBY - - run_test_file("models/user_test.rb").tap do |output| - assert_match "Migrations are pending. To resolve this issue, run:", output - assert_match "CreateUsers: migrating", output - assert_match "0 runs, 0 assertions, 0 failures, 0 errors, 0 skips", output - end - end - - def test_actionable_command_line_without_tty - rails "generate", "scaffold", "user", "name:string" - app_file "config/initializers/thor_yes.rb", <<-RUBY - Rails::Command::Base.class_eval <<-INITIALIZER - def tty? - false - end - INITIALIZER - RUBY - - run_test_file("models/user_test.rb").tap do |output| - assert_match "Migrations are pending. To resolve this issue, run:", output - assert_no_match "CreateUsers: migrating", output - assert_no_match "0 runs, 0 assertions, 0 failures, 0 errors, 0 skips", output - end - end - private def assert_unsuccessful_run(name, message) result = run_test_file(name)