diff --git a/activerecord/bin/test b/activerecord/bin/test index 9ecf27ce67259..0c911085d76cf 100755 --- a/activerecord/bin/test +++ b/activerecord/bin/test @@ -8,7 +8,7 @@ if adapter_index end COMPONENT_ROOT = File.expand_path("..", __dir__) -require_relative "../../tools/test" +require_relative "../test/support/tools" module Minitest def self.plugin_active_record_options(opts, options) diff --git a/activerecord/test/cases/adapters/postgresql/datatype_test.rb b/activerecord/test/cases/adapters/postgresql/datatype_test.rb index ff9ac166a6f59..2cfa35760df6e 100644 --- a/activerecord/test/cases/adapters/postgresql/datatype_test.rb +++ b/activerecord/test/cases/adapters/postgresql/datatype_test.rb @@ -7,7 +7,7 @@ class PostgresqlTime < ActiveRecord::Base # Declare attributes to get rid from deprecation warnings on ActiveRecord 6.1 attribute :time_interval, :string attribute :scaled_time_interval, :interval -end if current_adapter?(:PostgreSQLAdapter) +end class PostgresqlOid < ActiveRecord::Base end diff --git a/activerecord/test/cases/adapters/postgresql/geometric_test.rb b/activerecord/test/cases/adapters/postgresql/geometric_test.rb index 1e4f741f5fe5d..f312b6e23d7a0 100644 --- a/activerecord/test/cases/adapters/postgresql/geometric_test.rb +++ b/activerecord/test/cases/adapters/postgresql/geometric_test.rb @@ -16,7 +16,7 @@ class PostgresqlPoint < ActiveRecord::Base attribute :legacy_x, :legacy_point attribute :legacy_y, :legacy_point attribute :legacy_z, :legacy_point - end if current_adapter?(:PostgreSQLAdapter) + end def setup @connection = ActiveRecord::Base.connection diff --git a/activerecord/test/cases/adapters/postgresql/interval_test.rb b/activerecord/test/cases/adapters/postgresql/interval_test.rb index fc134be532279..f6f53e68dae43 100644 --- a/activerecord/test/cases/adapters/postgresql/interval_test.rb +++ b/activerecord/test/cases/adapters/postgresql/interval_test.rb @@ -12,7 +12,7 @@ class IntervalDataType < ActiveRecord::Base attribute :default_term, :interval attribute :all_terms, :interval, array: true attribute :legacy_term, :string - end if current_adapter?(:PostgreSQLAdapter) + end class DeprecatedIntervalDataType < ActiveRecord::Base; end diff --git a/activerecord/test/support/tools.rb b/activerecord/test/support/tools.rb new file mode 100644 index 0000000000000..e546dcaa8b6e5 --- /dev/null +++ b/activerecord/test/support/tools.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +$: << File.expand_path("test", COMPONENT_ROOT) + +require "bundler/setup" + +require "rails/test_unit/runner" +require "rails/test_unit/reporter" +require "rails/test_unit/line_filtering" +require "active_support" +require "active_support/test_case" + +require "rake/testtask" +Rails::TestUnit::Runner.singleton_class.prepend Module.new { + private + def list_tests(argv) + tests = super + tests.concat FileList["test/cases/adapters/#{adapter_name}/**/*_test.rb"] + end + + def default_test_exclude_glob + ENV["DEFAULT_TEST_EXCLUDE"] || "test/cases/adapters/*/*_test.rb" + end + + def adapter_name + ENV["ARCONN"] || "sqlite3" + end + } + +ActiveSupport::TestCase.extend Rails::LineFiltering +Rails::TestUnitReporter.app_root = COMPONENT_ROOT +Rails::TestUnitReporter.executable = "bin/test" + +Rails::TestUnit::Runner.parse_options(ARGV) +Rails::TestUnit::Runner.run(ARGV) diff --git a/railties/lib/rails/test_unit/runner.rb b/railties/lib/rails/test_unit/runner.rb index ca6e52bf7a588..d6755c6ea8cfe 100644 --- a/railties/lib/rails/test_unit/runner.rb +++ b/railties/lib/rails/test_unit/runner.rb @@ -43,10 +43,7 @@ def run(argv = []) end def load_tests(argv) - patterns = extract_filters(argv) - - tests = Rake::FileList[patterns.any? ? patterns : default_test_glob] - tests.exclude(default_test_exclude_glob) if patterns.empty? + tests = list_tests(argv) tests.to_a.each { |path| require File.expand_path(path) } end @@ -94,6 +91,14 @@ def regexp_filter?(arg) def path_argument?(arg) %r"^[/\\]?\w+[/\\]".match?(arg) end + + def list_tests(argv) + patterns = extract_filters(argv) + + tests = Rake::FileList[patterns.any? ? patterns : default_test_glob] + tests.exclude(default_test_exclude_glob) if patterns.empty? + tests + end end end