Skip to content

Commit f517eef

Browse files
authored
Merge pull request rails#46865 from amatsuda/AR_object_pollutions
Cleanup Object pollutions within AR tests by moving test helpers under AR::TestCase
2 parents c49b827 + b378293 commit f517eef

34 files changed

+493
-434
lines changed

activerecord/test/cases/adapter_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -475,8 +475,8 @@ def reset_fixtures(*fixture_names)
475475
end
476476
end
477477

478-
unless in_memory_db?
479-
class AdapterConnectionTest < ActiveRecord::TestCase
478+
class AdapterConnectionTest < ActiveRecord::TestCase
479+
unless in_memory_db?
480480
self.use_transactional_tests = false
481481

482482
fixtures :posts, :authors, :author_addresses

activerecord/test/cases/adapters/mysql2/optimizer_hints_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
require "cases/helper"
44
require "models/post"
55

6-
if supports_optimizer_hints?
7-
class Mysql2OptimizerHintsTest < ActiveRecord::Mysql2TestCase
6+
class Mysql2OptimizerHintsTest < ActiveRecord::Mysql2TestCase
7+
if supports_optimizer_hints?
88
fixtures :posts
99

1010
def test_optimizer_hints

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
require "cases/helper"
44
require "models/post"
55

6-
if supports_optimizer_hints?
7-
class PostgresqlOptimizerHintsTest < ActiveRecord::PostgreSQLTestCase
6+
class PostgresqlOptimizerHintsTest < ActiveRecord::PostgreSQLTestCase
7+
if supports_optimizer_hints?
88
fixtures :posts
99

1010
def setup

activerecord/test/cases/connection_adapters/mysql_type_lookup_test.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
require "cases/helper"
44
require "support/connection_helper"
55

6-
if current_adapter?(:Mysql2Adapter)
7-
module ActiveRecord
8-
module ConnectionAdapters
9-
class MysqlTypeLookupTest < ActiveRecord::TestCase
6+
module ActiveRecord
7+
module ConnectionAdapters
8+
class MysqlTypeLookupTest < ActiveRecord::TestCase
9+
if current_adapter?(:Mysql2Adapter)
1010
include ConnectionHelper
1111

1212
setup do

activerecord/test/cases/connection_adapters/type_lookup_test.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
require "cases/helper"
44

5-
unless current_adapter?(:PostgreSQLAdapter) # PostgreSQL does not use type strings for lookup
6-
module ActiveRecord
7-
module ConnectionAdapters
8-
class TypeLookupTest < ActiveRecord::TestCase
5+
module ActiveRecord
6+
module ConnectionAdapters
7+
class TypeLookupTest < ActiveRecord::TestCase
8+
unless current_adapter?(:PostgreSQLAdapter) # PostgreSQL does not use type strings for lookup
99
setup do
1010
@connection = ActiveRecord::Base.connection
1111
end

activerecord/test/cases/date_time_precision_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
require "cases/helper"
44
require "support/schema_dumping_helper"
55

6-
if supports_datetime_with_precision?
7-
class DateTimePrecisionTest < ActiveRecord::TestCase
6+
class DateTimePrecisionTest < ActiveRecord::TestCase
7+
if supports_datetime_with_precision?
88
include SchemaDumpingHelper
99
self.use_transactional_tests = false
1010

activerecord/test/cases/defaults_test.rb

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ def test_default_strings_containing_single_quotes
8383
end
8484
end
8585

86-
if current_adapter?(:SQLite3Adapter, :PostgreSQLAdapter)
87-
class DefaultBinaryTest < ActiveRecord::TestCase
86+
class DefaultBinaryTest < ActiveRecord::TestCase
87+
if current_adapter?(:SQLite3Adapter, :PostgreSQLAdapter)
8888
class DefaultBinary < ActiveRecord::Base; end
8989

9090
setup do
@@ -116,8 +116,8 @@ def test_default_varbinary_string_that_looks_like_hex
116116
end
117117
end
118118

119-
if supports_text_column_with_default?
120-
class DefaultTextTest < ActiveRecord::TestCase
119+
class DefaultTextTest < ActiveRecord::TestCase
120+
if supports_text_column_with_default?
121121
class DefaultText < ActiveRecord::Base; end
122122

123123
setup do
@@ -143,8 +143,8 @@ def test_default_texts_containing_single_quotes
143143
end
144144
end
145145

146-
if current_adapter?(:PostgreSQLAdapter)
147-
class PostgresqlDefaultExpressionTest < ActiveRecord::TestCase
146+
class PostgresqlDefaultExpressionTest < ActiveRecord::TestCase
147+
if current_adapter?(:PostgreSQLAdapter)
148148
include SchemaDumpingHelper
149149

150150
test "schema dump includes default expression" do
@@ -164,8 +164,8 @@ class PostgresqlDefaultExpressionTest < ActiveRecord::TestCase
164164
end
165165
end
166166

167-
if current_adapter?(:Mysql2Adapter)
168-
class MysqlDefaultExpressionTest < ActiveRecord::TestCase
167+
class MysqlDefaultExpressionTest < ActiveRecord::TestCase
168+
if current_adapter?(:Mysql2Adapter)
169169
include SchemaDumpingHelper
170170

171171
if supports_default_expression?
@@ -212,8 +212,10 @@ class MysqlDefaultExpressionTest < ActiveRecord::TestCase
212212
end
213213
end
214214
end
215+
end
215216

216-
class DefaultsTestWithoutTransactionalFixtures < ActiveRecord::TestCase
217+
class DefaultsTestWithoutTransactionalFixtures < ActiveRecord::TestCase
218+
if current_adapter?(:Mysql2Adapter)
217219
# ActiveRecord::Base#create! (and #save and other related methods) will
218220
# open a new transaction. When in transactional tests mode, this will
219221
# cause Active Record to create a new savepoint. However, since MySQL doesn't
@@ -298,8 +300,8 @@ def with_mysql_not_null_table
298300
end
299301
end
300302

301-
if current_adapter?(:SQLite3Adapter)
302-
class Sqlite3DefaultExpressionTest < ActiveRecord::TestCase
303+
class Sqlite3DefaultExpressionTest < ActiveRecord::TestCase
304+
if current_adapter?(:SQLite3Adapter)
303305
include SchemaDumpingHelper
304306

305307
test "schema dump includes default expression" do

activerecord/test/cases/fixtures_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,8 +1510,8 @@ class PrimaryKeyErrorTest < ActiveRecord::TestCase
15101510
end
15111511
end
15121512

1513-
if current_adapter?(:SQLite3Adapter) && !in_memory_db?
1514-
class MultipleFixtureConnectionsTest < ActiveRecord::TestCase
1513+
class MultipleFixtureConnectionsTest < ActiveRecord::TestCase
1514+
if current_adapter?(:SQLite3Adapter) && !in_memory_db?
15151515
include ActiveRecord::TestFixtures
15161516

15171517
fixtures :dogs

activerecord/test/cases/helper.rb

Lines changed: 0 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111
require "active_support/core_ext/kernel/reporting"
1212
require "active_support/core_ext/kernel/singleton_class"
1313

14-
require "support/config"
15-
require "support/connection"
16-
1714
# TODO: Move all these random hacks into the ARTest namespace and into the support/ dir
1815

1916
Thread.abort_on_exception = true
@@ -24,113 +21,12 @@
2421
# Disable available locale checks to avoid warnings running the test suite.
2522
I18n.enforce_available_locales = false
2623

27-
# Connect to the database
28-
ARTest.connect
29-
3024
# Quote "type" if it's a reserved word for the current connection.
3125
QUOTED_TYPE = ActiveRecord::Base.connection.quote_column_name("type")
3226

3327
ActiveRecord.raise_on_assign_to_attr_readonly = true
3428
ActiveRecord.belongs_to_required_validates_foreign_key = false
3529

36-
def current_adapter?(*types)
37-
types.any? do |type|
38-
ActiveRecord::ConnectionAdapters.const_defined?(type) &&
39-
ActiveRecord::Base.connection.is_a?(ActiveRecord::ConnectionAdapters.const_get(type))
40-
end
41-
end
42-
43-
def in_memory_db?
44-
current_adapter?(:SQLite3Adapter) &&
45-
ActiveRecord::Base.connection_pool.db_config.database == ":memory:"
46-
end
47-
48-
def mysql_enforcing_gtid_consistency?
49-
current_adapter?(:Mysql2Adapter) && "ON" == ActiveRecord::Base.connection.show_variable("enforce_gtid_consistency")
50-
end
51-
52-
def supports_default_expression?
53-
if current_adapter?(:PostgreSQLAdapter)
54-
true
55-
elsif current_adapter?(:Mysql2Adapter)
56-
conn = ActiveRecord::Base.connection
57-
!conn.mariadb? && conn.database_version >= "8.0.13"
58-
end
59-
end
60-
61-
def supports_non_unique_constraint_name?
62-
if current_adapter?(:Mysql2Adapter)
63-
conn = ActiveRecord::Base.connection
64-
conn.mariadb?
65-
else
66-
false
67-
end
68-
end
69-
70-
def supports_text_column_with_default?
71-
if current_adapter?(:Mysql2Adapter)
72-
conn = ActiveRecord::Base.connection
73-
conn.mariadb? && conn.database_version >= "10.2.1"
74-
else
75-
true
76-
end
77-
end
78-
79-
%w[
80-
supports_savepoints?
81-
supports_partial_index?
82-
supports_partitioned_indexes?
83-
supports_expression_index?
84-
supports_insert_returning?
85-
supports_insert_on_duplicate_skip?
86-
supports_insert_on_duplicate_update?
87-
supports_insert_conflict_target?
88-
supports_optimizer_hints?
89-
supports_datetime_with_precision?
90-
].each do |method_name|
91-
define_method method_name do
92-
ActiveRecord::Base.connection.public_send(method_name)
93-
end
94-
end
95-
96-
def enable_extension!(extension, connection)
97-
return false unless connection.supports_extensions?
98-
return connection.reconnect! if connection.extension_enabled?(extension)
99-
100-
connection.enable_extension extension
101-
connection.commit_db_transaction if connection.transaction_open?
102-
connection.reconnect!
103-
end
104-
105-
def disable_extension!(extension, connection)
106-
return false unless connection.supports_extensions?
107-
return true unless connection.extension_enabled?(extension)
108-
109-
connection.disable_extension(extension, force: :cascade)
110-
connection.reconnect!
111-
end
112-
113-
def load_schema
114-
# silence verbose schema loading
115-
original_stdout = $stdout
116-
$stdout = StringIO.new
117-
118-
adapter_name = ActiveRecord::Base.connection.adapter_name.downcase
119-
adapter_specific_schema_file = SCHEMA_ROOT + "/#{adapter_name}_specific_schema.rb"
120-
121-
load SCHEMA_ROOT + "/schema.rb"
122-
123-
if File.exist?(adapter_specific_schema_file)
124-
load adapter_specific_schema_file
125-
end
126-
127-
ActiveRecord::FixtureSet.reset_cache
128-
ensure
129-
$stdout = original_stdout
130-
end
131-
132-
load_schema
133-
13430
class SQLSubscriber
13531
attr_reader :logged
13632
attr_reader :payloads

activerecord/test/cases/invalid_connection_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
require "cases/helper"
44

5-
if current_adapter?(:Mysql2Adapter)
6-
class TestAdapterWithInvalidConnection < ActiveRecord::TestCase
5+
class TestAdapterWithInvalidConnection < ActiveRecord::TestCase
6+
if current_adapter?(:Mysql2Adapter)
77
self.use_transactional_tests = false
88

99
class Bird < ActiveRecord::Base

0 commit comments

Comments
 (0)