Skip to content

Commit 1a240cf

Browse files
authored
Merge pull request rails#43131 from yahonda/bin_test_handles_adaptes
Active Record `bin/test` to execute its own adapter specific tests
2 parents badf915 + 6d10aaf commit 1a240cf

File tree

6 files changed

+48
-8
lines changed

6 files changed

+48
-8
lines changed

activerecord/bin/test

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ if adapter_index
88
end
99

1010
COMPONENT_ROOT = File.expand_path("..", __dir__)
11-
require_relative "../../tools/test"
11+
require_relative "../test/support/tools"
1212

1313
module Minitest
1414
def self.plugin_active_record_options(opts, options)

activerecord/test/cases/adapters/postgresql/datatype_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class PostgresqlTime < ActiveRecord::Base
77
# Declare attributes to get rid from deprecation warnings on ActiveRecord 6.1
88
attribute :time_interval, :string
99
attribute :scaled_time_interval, :interval
10-
end if current_adapter?(:PostgreSQLAdapter)
10+
end
1111

1212
class PostgresqlOid < ActiveRecord::Base
1313
end

activerecord/test/cases/adapters/postgresql/geometric_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class PostgresqlPoint < ActiveRecord::Base
1616
attribute :legacy_x, :legacy_point
1717
attribute :legacy_y, :legacy_point
1818
attribute :legacy_z, :legacy_point
19-
end if current_adapter?(:PostgreSQLAdapter)
19+
end
2020

2121
def setup
2222
@connection = ActiveRecord::Base.connection

activerecord/test/cases/adapters/postgresql/interval_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class IntervalDataType < ActiveRecord::Base
1212
attribute :default_term, :interval
1313
attribute :all_terms, :interval, array: true
1414
attribute :legacy_term, :string
15-
end if current_adapter?(:PostgreSQLAdapter)
15+
end
1616

1717
class DeprecatedIntervalDataType < ActiveRecord::Base; end
1818

activerecord/test/support/tools.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# frozen_string_literal: true
2+
3+
$: << File.expand_path("test", COMPONENT_ROOT)
4+
5+
require "bundler/setup"
6+
7+
require "rails/test_unit/runner"
8+
require "rails/test_unit/reporter"
9+
require "rails/test_unit/line_filtering"
10+
require "active_support"
11+
require "active_support/test_case"
12+
13+
require "rake/testtask"
14+
Rails::TestUnit::Runner.singleton_class.prepend Module.new {
15+
private
16+
def list_tests(argv)
17+
tests = super
18+
tests.concat FileList["test/cases/adapters/#{adapter_name}/**/*_test.rb"]
19+
end
20+
21+
def default_test_exclude_glob
22+
ENV["DEFAULT_TEST_EXCLUDE"] || "test/cases/adapters/*/*_test.rb"
23+
end
24+
25+
def adapter_name
26+
ENV["ARCONN"] || "sqlite3"
27+
end
28+
}
29+
30+
ActiveSupport::TestCase.extend Rails::LineFiltering
31+
Rails::TestUnitReporter.app_root = COMPONENT_ROOT
32+
Rails::TestUnitReporter.executable = "bin/test"
33+
34+
Rails::TestUnit::Runner.parse_options(ARGV)
35+
Rails::TestUnit::Runner.run(ARGV)

railties/lib/rails/test_unit/runner.rb

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,7 @@ def run(argv = [])
4343
end
4444

4545
def load_tests(argv)
46-
patterns = extract_filters(argv)
47-
48-
tests = Rake::FileList[patterns.any? ? patterns : default_test_glob]
49-
tests.exclude(default_test_exclude_glob) if patterns.empty?
46+
tests = list_tests(argv)
5047
tests.to_a.each { |path| require File.expand_path(path) }
5148
end
5249

@@ -94,6 +91,14 @@ def regexp_filter?(arg)
9491
def path_argument?(arg)
9592
%r"^[/\\]?\w+[/\\]".match?(arg)
9693
end
94+
95+
def list_tests(argv)
96+
patterns = extract_filters(argv)
97+
98+
tests = Rake::FileList[patterns.any? ? patterns : default_test_glob]
99+
tests.exclude(default_test_exclude_glob) if patterns.empty?
100+
tests
101+
end
97102
end
98103
end
99104

0 commit comments

Comments
 (0)