提交 81ae632d 编写于 作者: Y Yves Senn

make it possible to run AR tests with bin/test

上级 54d84cbb
#!/usr/bin/env ruby
COMPONENT_ROOT = File.expand_path("../../", __FILE__)
require File.expand_path("../tools/test", COMPONENT_ROOT)
require "cases/helper"
require 'support/connection_helper'
class ActiveSchemaTest < ActiveRecord::TestCase
class MysqlActiveSchemaTest < ActiveRecord::MysqlTestCase
include ConnectionHelper
def setup
......
require "cases/helper"
class MysqlCaseSensitivityTest < ActiveRecord::TestCase
class MysqlCaseSensitivityTest < ActiveRecord::MysqlTestCase
class CollationTest < ActiveRecord::Base
end
......
require "cases/helper"
require 'support/schema_dumping_helper'
class CharsetCollationTest < ActiveRecord::TestCase
class MysqlCharsetCollationTest < ActiveRecord::MysqlTestCase
include SchemaDumpingHelper
self.use_transactional_tests = false
......
......@@ -2,7 +2,7 @@
require 'support/connection_helper'
require 'support/ddl_helper'
class MysqlConnectionTest < ActiveRecord::TestCase
class MysqlConnectionTest < ActiveRecord::MysqlTestCase
include ConnectionHelper
include DdlHelper
......
require "cases/helper"
class MysqlConsistencyTest < ActiveRecord::TestCase
class MysqlConsistencyTest < ActiveRecord::MysqlTestCase
self.use_transactional_tests = false
class Consistency < ActiveRecord::Base
......
require "cases/helper"
class MysqlEnumTest < ActiveRecord::TestCase
class MysqlEnumTest < ActiveRecord::MysqlTestCase
class EnumTest < ActiveRecord::Base
end
......
......@@ -4,7 +4,7 @@
module ActiveRecord
module ConnectionAdapters
class MysqlAdapterTest < ActiveRecord::TestCase
class MysqlAdapterTest < ActiveRecord::MysqlTestCase
include DdlHelper
def setup
......
require "cases/helper"
module ActiveRecord
module ConnectionAdapters
class MysqlAdapter
class QuotingTest < ActiveRecord::TestCase
def setup
@conn = ActiveRecord::Base.connection
end
class MysqlQuotingTest < ActiveRecord::MysqlTestCase
def setup
@conn = ActiveRecord::Base.connection
end
def test_type_cast_true
assert_equal 1, @conn.type_cast(true)
end
def test_type_cast_true
assert_equal 1, @conn.type_cast(true)
end
def test_type_cast_false
assert_equal 0, @conn.type_cast(false)
end
end
end
def test_type_cast_false
assert_equal 0, @conn.type_cast(false)
end
end
require "cases/helper"
class Group < ActiveRecord::Base
Group.table_name = 'group'
belongs_to :select
has_one :values
end
# a suite of tests to ensure the ConnectionAdapters#MysqlAdapter can handle tables with
# reserved word names (ie: group, order, values, etc...)
class MysqlReservedWordTest < ActiveRecord::MysqlTestCase
class Group < ActiveRecord::Base
Group.table_name = 'group'
belongs_to :select
has_one :values
end
class Select < ActiveRecord::Base
Select.table_name = 'select'
has_many :groups
end
class Select < ActiveRecord::Base
Select.table_name = 'select'
has_many :groups
end
class Values < ActiveRecord::Base
Values.table_name = 'values'
end
class Values < ActiveRecord::Base
Values.table_name = 'values'
end
class Distinct < ActiveRecord::Base
Distinct.table_name = 'distinct'
has_and_belongs_to_many :selects
has_many :values, :through => :groups
end
class Distinct < ActiveRecord::Base
Distinct.table_name = 'distinct'
has_and_belongs_to_many :selects
has_many :values, :through => :groups
end
# a suite of tests to ensure the ConnectionAdapters#MysqlAdapter can handle tables with
# reserved word names (ie: group, order, values, etc...)
class MysqlReservedWordTest < ActiveRecord::TestCase
def setup
@connection = ActiveRecord::Base.connection
......
......@@ -4,7 +4,7 @@
module ActiveRecord
module ConnectionAdapters
class MysqlSchemaTest < ActiveRecord::TestCase
class MysqlSchemaTest < ActiveRecord::MysqlTestCase
fixtures :posts
def setup
......
require "cases/helper"
require 'models/topic'
class StoredProcedureTest < ActiveRecord::TestCase
class StoredProcedureTest < ActiveRecord::MysqlTestCase
fixtures :topics
# Test that MySQL allows multiple results for stored procedures
if Mysql.const_defined?(:CLIENT_MULTI_RESULTS)
if defined?(Mysql) && Mysql.const_defined?(:CLIENT_MULTI_RESULTS)
def test_multi_results_from_find_by_sql
topics = Topic.find_by_sql 'CALL topics();'
assert_equal 1, topics.size
......
require "cases/helper"
class SqlTypesTest < ActiveRecord::TestCase
class MysqlSqlTypesTest < ActiveRecord::MysqlTestCase
def test_binary_types
assert_equal 'varbinary(64)', type_to_sql(:binary, 64)
assert_equal 'varbinary(4095)', type_to_sql(:binary, 4095)
......
require 'cases/helper'
module ActiveRecord::ConnectionAdapters
class MysqlAdapter
class StatementPoolTest < ActiveRecord::TestCase
if Process.respond_to?(:fork)
def test_cache_is_per_pid
cache = StatementPool.new nil, 10
cache['foo'] = 'bar'
assert_equal 'bar', cache['foo']
class MysqlStatementPoolTest < ActiveRecord::MysqlTestCase
if Process.respond_to?(:fork)
def test_cache_is_per_pid
cache = ActiveRecord::ConnectionAdapters::MysqlAdapter::StatementPool.new nil, 10
cache['foo'] = 'bar'
assert_equal 'bar', cache['foo']
pid = fork {
lookup = cache['foo'];
exit!(!lookup)
}
pid = fork {
lookup = cache['foo'];
exit!(!lookup)
}
Process.waitpid pid
assert $?.success?, 'process should exit successfully'
end
end
Process.waitpid pid
assert $?.success?, 'process should exit successfully'
end
end
end
require "cases/helper"
require 'support/schema_dumping_helper'
class MysqlTableOptionsTest < ActiveRecord::TestCase
class MysqlTableOptionsTest < ActiveRecord::MysqlTestCase
include SchemaDumpingHelper
def setup
......
require "cases/helper"
class UnsignedTypeTest < ActiveRecord::TestCase
class MysqlUnsignedTypeTest < ActiveRecord::MysqlTestCase
self.use_transactional_tests = false
class UnsignedType < ActiveRecord::Base
......
require "cases/helper"
require 'support/connection_helper'
class ActiveSchemaTest < ActiveRecord::TestCase
class Mysql2ActiveSchemaTest < ActiveRecord::Mysql2TestCase
include ConnectionHelper
def setup
......
......@@ -4,7 +4,7 @@
module ActiveRecord
module ConnectionAdapters
class Mysql2Adapter
class BindParameterTest < ActiveRecord::TestCase
class BindParameterTest < ActiveRecord::Mysql2TestCase
fixtures :topics
def test_update_question_marks
......
require "cases/helper"
class Mysql2BooleanTest < ActiveRecord::TestCase
class Mysql2BooleanTest < ActiveRecord::Mysql2TestCase
self.use_transactional_tests = false
class BooleanType < ActiveRecord::Base
......
require "cases/helper"
class Mysql2CaseSensitivityTest < ActiveRecord::TestCase
class Mysql2CaseSensitivityTest < ActiveRecord::Mysql2TestCase
class CollationTest < ActiveRecord::Base
end
......
require "cases/helper"
require 'support/schema_dumping_helper'
class CharsetCollationTest < ActiveRecord::TestCase
class Mysql2CharsetCollationTest < ActiveRecord::Mysql2TestCase
include SchemaDumpingHelper
self.use_transactional_tests = false
......
require "cases/helper"
require 'support/connection_helper'
class MysqlConnectionTest < ActiveRecord::TestCase
class Mysql2ConnectionTest < ActiveRecord::Mysql2TestCase
include ConnectionHelper
fixtures :comments
......
require "cases/helper"
class Mysql2EnumTest < ActiveRecord::TestCase
class Mysql2EnumTest < ActiveRecord::Mysql2TestCase
class EnumTest < ActiveRecord::Base
end
......
......@@ -5,7 +5,7 @@
module ActiveRecord
module ConnectionAdapters
class Mysql2Adapter
class ExplainTest < ActiveRecord::TestCase
class ExplainTest < ActiveRecord::Mysql2TestCase
fixtures :developers
def test_explain_for_one_query
......
require "cases/helper"
class Group < ActiveRecord::Base
Group.table_name = 'group'
belongs_to :select
has_one :values
end
# a suite of tests to ensure the ConnectionAdapters#MysqlAdapter can handle tables with
# reserved word names (ie: group, order, values, etc...)
class Mysql2ReservedWordTest < ActiveRecord::Mysql2TestCase
class Group < ActiveRecord::Base
Group.table_name = 'group'
belongs_to :select
has_one :values
end
class Select < ActiveRecord::Base
Select.table_name = 'select'
has_many :groups
end
class Select < ActiveRecord::Base
Select.table_name = 'select'
has_many :groups
end
class Values < ActiveRecord::Base
Values.table_name = 'values'
end
class Values < ActiveRecord::Base
Values.table_name = 'values'
end
class Distinct < ActiveRecord::Base
Distinct.table_name = 'distinct'
has_and_belongs_to_many :selects
has_many :values, :through => :groups
end
class Distinct < ActiveRecord::Base
Distinct.table_name = 'distinct'
has_and_belongs_to_many :selects
has_many :values, :through => :groups
end
# a suite of tests to ensure the ConnectionAdapters#MysqlAdapter can handle tables with
# reserved word names (ie: group, order, values, etc...)
class MysqlReservedWordTest < ActiveRecord::TestCase
def setup
@connection = ActiveRecord::Base.connection
......
require "cases/helper"
module ActiveRecord
module ConnectionAdapters
class AbstractMysqlAdapter
class SchemaMigrationsTest < ActiveRecord::TestCase
def test_renaming_index_on_foreign_key
connection.add_index "engines", "car_id"
connection.add_foreign_key :engines, :cars, name: "fk_engines_cars"
connection.rename_index("engines", "index_engines_on_car_id", "idx_renamed")
assert_equal ["idx_renamed"], connection.indexes("engines").map(&:name)
ensure
connection.remove_foreign_key :engines, name: "fk_engines_cars"
end
def test_initializes_schema_migrations_for_encoding_utf8mb4
smtn = ActiveRecord::Migrator.schema_migrations_table_name
connection.drop_table smtn, if_exists: true
database_name = connection.current_database
database_info = connection.select_one("SELECT * FROM information_schema.schemata WHERE schema_name = '#{database_name}'")
original_charset = database_info["DEFAULT_CHARACTER_SET_NAME"]
original_collation = database_info["DEFAULT_COLLATION_NAME"]
execute("ALTER DATABASE #{database_name} DEFAULT CHARACTER SET utf8mb4")
connection.initialize_schema_migrations_table
assert connection.column_exists?(smtn, :version, :string, limit: AbstractMysqlAdapter::MAX_INDEX_LENGTH_FOR_CHARSETS_OF_4BYTES_MAXLEN)
ensure
execute("ALTER DATABASE #{database_name} DEFAULT CHARACTER SET #{original_charset} COLLATE #{original_collation}")
end
private
def connection
@connection ||= ActiveRecord::Base.connection
end
def execute(sql)
connection.execute(sql)
end
end
end
class SchemaMigrationsTest < ActiveRecord::Mysql2TestCase
def test_renaming_index_on_foreign_key
connection.add_index "engines", "car_id"
connection.add_foreign_key :engines, :cars, name: "fk_engines_cars"
connection.rename_index("engines", "index_engines_on_car_id", "idx_renamed")
assert_equal ["idx_renamed"], connection.indexes("engines").map(&:name)
ensure
connection.remove_foreign_key :engines, name: "fk_engines_cars"
end
def test_initializes_schema_migrations_for_encoding_utf8mb4
smtn = ActiveRecord::Migrator.schema_migrations_table_name
connection.drop_table smtn, if_exists: true
database_name = connection.current_database
database_info = connection.select_one("SELECT * FROM information_schema.schemata WHERE schema_name = '#{database_name}'")
original_charset = database_info["DEFAULT_CHARACTER_SET_NAME"]
original_collation = database_info["DEFAULT_COLLATION_NAME"]
execute("ALTER DATABASE #{database_name} DEFAULT CHARACTER SET utf8mb4")
connection.initialize_schema_migrations_table
limit = ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MAX_INDEX_LENGTH_FOR_CHARSETS_OF_4BYTES_MAXLEN
assert connection.column_exists?(smtn, :version, :string, limit: limit)
ensure
execute("ALTER DATABASE #{database_name} DEFAULT CHARACTER SET #{original_charset} COLLATE #{original_collation}")
end
private
def connection
@connection ||= ActiveRecord::Base.connection
end
def execute(sql)
connection.execute(sql)
end
end
......@@ -4,7 +4,7 @@
module ActiveRecord
module ConnectionAdapters
class Mysql2SchemaTest < ActiveRecord::TestCase
class Mysql2SchemaTest < ActiveRecord::Mysql2TestCase
fixtures :posts
def setup
......
require "cases/helper"
class SqlTypesTest < ActiveRecord::TestCase
class Mysql2SqlTypesTest < ActiveRecord::Mysql2TestCase
def test_binary_types
assert_equal 'varbinary(64)', type_to_sql(:binary, 64)
assert_equal 'varbinary(4095)', type_to_sql(:binary, 4095)
......
require "cases/helper"
require 'support/schema_dumping_helper'
class MysqlTableOptionsTest < ActiveRecord::TestCase
class Mysql2TableOptionsTest < ActiveRecord::Mysql2TestCase
include SchemaDumpingHelper
def setup
......
require "cases/helper"
class UnsignedTypeTest < ActiveRecord::TestCase
class Mysql2UnsignedTypeTest < ActiveRecord::Mysql2TestCase
self.use_transactional_tests = false
class UnsignedType < ActiveRecord::Base
......
require 'cases/helper'
class PostgresqlActiveSchemaTest < ActiveRecord::TestCase
class PostgresqlActiveSchemaTest < ActiveRecord::PostgreSQLTestCase
def setup
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do
def execute(sql, name = nil) sql end
......
require "cases/helper"
require 'support/schema_dumping_helper'
class PostgresqlArrayTest < ActiveRecord::TestCase
class PostgresqlArrayTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
include InTimeZone
OID = ActiveRecord::ConnectionAdapters::PostgreSQL::OID
class PgArray < ActiveRecord::Base
self.table_name = 'pg_arrays'
......@@ -212,8 +211,9 @@ def test_string_quoting_rules_match_pg_behavior
def test_quoting_non_standard_delimiters
strings = ["hello,", "world;"]
comma_delim = OID::Array.new(ActiveRecord::Type::String.new, ',')
semicolon_delim = OID::Array.new(ActiveRecord::Type::String.new, ';')
oid = ActiveRecord::ConnectionAdapters::PostgreSQL::OID
comma_delim = oid::Array.new(ActiveRecord::Type::String.new, ',')
semicolon_delim = oid::Array.new(ActiveRecord::Type::String.new, ';')
assert_equal %({"hello,",world;}), comma_delim.serialize(strings)
assert_equal %({hello,;"world;"}), semicolon_delim.serialize(strings)
......
......@@ -2,7 +2,7 @@
require 'support/connection_helper'
require 'support/schema_dumping_helper'
class PostgresqlBitStringTest < ActiveRecord::TestCase
class PostgresqlBitStringTest < ActiveRecord::PostgreSQLTestCase
include ConnectionHelper
include SchemaDumpingHelper
......
require "cases/helper"
class PostgresqlByteaTest < ActiveRecord::TestCase
class PostgresqlByteaTest < ActiveRecord::PostgreSQLTestCase
class ByteaDataType < ActiveRecord::Base
self.table_name = 'bytea_data_type'
end
......
......@@ -2,7 +2,7 @@
module ActiveRecord
class Migration
class PGChangeSchemaTest < ActiveRecord::TestCase
class PGChangeSchemaTest < ActiveRecord::PostgreSQLTestCase
attr_reader :connection
def setup
......
......@@ -3,8 +3,8 @@
module ActiveRecord
module ConnectionAdapters
class PostgreSQLAdapter
class CidrTest < ActiveRecord::TestCase
class PostgreSQLAdapter < AbstractAdapter
class CidrTest < ActiveRecord::PostgreSQLTestCase
test "type casting IPAddr for database" do
type = OID::Cidr.new
ip = IPAddr.new("255.0.0.0/8")
......
......@@ -2,7 +2,7 @@
require 'support/schema_dumping_helper'
if ActiveRecord::Base.connection.supports_extensions?
class PostgresqlCitextTest < ActiveRecord::TestCase
class PostgresqlCitextTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
class Citext < ActiveRecord::Base
self.table_name = 'citexts'
......
require "cases/helper"
require 'support/schema_dumping_helper'
class PostgresqlCollationTest < ActiveRecord::TestCase
class PostgresqlCollationTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
def setup
......
......@@ -40,7 +40,7 @@ def teardown
# "unknown OID 5653508: failed to recognize type of 'address'. It will be treated as String."
# To take full advantage of composite types, we suggest you register your own +OID::Type+.
# See PostgresqlCompositeWithCustomOIDTest
class PostgresqlCompositeTest < ActiveRecord::TestCase
class PostgresqlCompositeTest < ActiveRecord::PostgreSQLTestCase
include PostgresqlCompositeBehavior
def test_column
......@@ -77,7 +77,7 @@ def ensure_warning_is_issued
end
end
class PostgresqlCompositeWithCustomOIDTest < ActiveRecord::TestCase
class PostgresqlCompositeWithCustomOIDTest < ActiveRecord::PostgreSQLTestCase
include PostgresqlCompositeBehavior
class FullAddressType < ActiveRecord::Type::Value
......
......@@ -2,7 +2,7 @@
require 'support/connection_helper'
module ActiveRecord
class PostgresqlConnectionTest < ActiveRecord::TestCase
class PostgresqlConnectionTest < ActiveRecord::PostgreSQLTestCase
include ConnectionHelper
class NonExistentTable < ActiveRecord::Base
......
......@@ -11,7 +11,7 @@ class PostgresqlOid < ActiveRecord::Base
class PostgresqlLtree < ActiveRecord::Base
end
class PostgresqlDataTypeTest < ActiveRecord::TestCase
class PostgresqlDataTypeTest < ActiveRecord::PostgreSQLTestCase
self.use_transactional_tests = false
def setup
......@@ -69,7 +69,7 @@ def test_text_columns_are_limitless_the_upper_limit_is_one_GB
end
end
class PostgresqlInternalDataTypeTest < ActiveRecord::TestCase
class PostgresqlInternalDataTypeTest < ActiveRecord::PostgreSQLTestCase
include DdlHelper
setup do
......
require "cases/helper"
require 'support/connection_helper'
class PostgresqlDomainTest < ActiveRecord::TestCase
class PostgresqlDomainTest < ActiveRecord::PostgreSQLTestCase
include ConnectionHelper
class PostgresqlDomain < ActiveRecord::Base
......
require "cases/helper"
require 'support/connection_helper'
class PostgresqlEnumTest < ActiveRecord::TestCase
class PostgresqlEnumTest < ActiveRecord::PostgreSQLTestCase
include ConnectionHelper
class PostgresqlEnum < ActiveRecord::Base
......
......@@ -2,25 +2,19 @@
require 'models/developer'
require 'models/computer'
module ActiveRecord
module ConnectionAdapters
class PostgreSQLAdapter
class ExplainTest < ActiveRecord::TestCase
fixtures :developers
class PostgreSQLExplainTest < ActiveRecord::PostgreSQLTestCase
fixtures :developers
def test_explain_for_one_query
explain = Developer.where(:id => 1).explain
assert_match %(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = $1), explain
assert_match %(QUERY PLAN), explain
end
def test_explain_for_one_query
explain = Developer.where(:id => 1).explain
assert_match %(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = $1), explain
assert_match %(QUERY PLAN), explain
end
def test_explain_with_eager_loading
explain = Developer.where(:id => 1).includes(:audit_logs).explain
assert_match %(QUERY PLAN), explain
assert_match %(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = $1), explain
assert_match %(EXPLAIN for: SELECT "audit_logs".* FROM "audit_logs" WHERE "audit_logs"."developer_id" = 1), explain
end
end
end
def test_explain_with_eager_loading
explain = Developer.where(:id => 1).includes(:audit_logs).explain
assert_match %(QUERY PLAN), explain
assert_match %(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = $1), explain
assert_match %(EXPLAIN for: SELECT "audit_logs".* FROM "audit_logs" WHERE "audit_logs"."developer_id" = 1), explain
end
end
require "cases/helper"
class PostgresqlExtensionMigrationTest < ActiveRecord::TestCase
class PostgresqlExtensionMigrationTest < ActiveRecord::PostgreSQLTestCase
self.use_transactional_tests = false
class EnableHstore < ActiveRecord::Migration
......
require "cases/helper"
require 'support/schema_dumping_helper'
class PostgresqlFullTextTest < ActiveRecord::TestCase
class PostgresqlFullTextTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
class Tsvector < ActiveRecord::Base; end
......
......@@ -2,7 +2,7 @@
require 'support/connection_helper'
require 'support/schema_dumping_helper'
class PostgresqlPointTest < ActiveRecord::TestCase
class PostgresqlPointTest < ActiveRecord::PostgreSQLTestCase
include ConnectionHelper
include SchemaDumpingHelper
......@@ -166,7 +166,7 @@ def test_legacy_mutation
end
end
class PostgresqlGeometricTest < ActiveRecord::TestCase
class PostgresqlGeometricTest < ActiveRecord::PostgreSQLTestCase
class PostgresqlGeometric < ActiveRecord::Base; end
setup do
......
......@@ -2,7 +2,7 @@
require 'support/schema_dumping_helper'
if ActiveRecord::Base.connection.supports_extensions?
class PostgresqlHstoreTest < ActiveRecord::TestCase
class PostgresqlHstoreTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
class Hstore < ActiveRecord::Base
self.table_name = 'hstores'
......
require "cases/helper"
class PostgresqlInfinityTest < ActiveRecord::TestCase
class PostgresqlInfinityTest < ActiveRecord::PostgreSQLTestCase
include InTimeZone
class PostgresqlInfinity < ActiveRecord::Base
......
require "cases/helper"
require "active_support/core_ext/numeric/bytes"
class PostgresqlIntegerTest < ActiveRecord::TestCase
class PostgresqlIntegerTest < ActiveRecord::PostgreSQLTestCase
class PgInteger < ActiveRecord::Base
end
......
......@@ -188,7 +188,7 @@ def test_assigning_invalid_json
end
end
class PostgresqlJSONTest < ActiveRecord::TestCase
class PostgresqlJSONTest < ActiveRecord::PostgreSQLTestCase
include PostgresqlJSONSharedTestCases
def column_type
......@@ -196,7 +196,7 @@ def column_type
end
end
class PostgresqlJSONBTest < ActiveRecord::TestCase
class PostgresqlJSONBTest < ActiveRecord::PostgreSQLTestCase
include PostgresqlJSONSharedTestCases
def column_type
......
require "cases/helper"
require 'support/schema_dumping_helper'
class PostgresqlLtreeTest < ActiveRecord::TestCase
class PostgresqlLtreeTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
class Ltree < ActiveRecord::Base
self.table_name = 'ltrees'
......
require "cases/helper"
require 'support/schema_dumping_helper'
class PostgresqlMoneyTest < ActiveRecord::TestCase
class PostgresqlMoneyTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
class PostgresqlMoney < ActiveRecord::Base; end
......
require "cases/helper"
require 'support/schema_dumping_helper'
class PostgresqlNetworkTest < ActiveRecord::TestCase
class PostgresqlNetworkTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
class PostgresqlNetworkAddress < ActiveRecord::Base; end
......
require "cases/helper"
class PostgresqlNumberTest < ActiveRecord::TestCase
class PostgresqlNumberTest < ActiveRecord::PostgreSQLTestCase
class PostgresqlNumber < ActiveRecord::Base; end
setup do
......
......@@ -4,7 +4,7 @@
module ActiveRecord
module ConnectionAdapters
class PostgreSQLAdapterTest < ActiveRecord::TestCase
class PostgreSQLAdapterTest < ActiveRecord::PostgreSQLTestCase
include DdlHelper
include ConnectionHelper
......
......@@ -4,7 +4,7 @@
module ActiveRecord
module ConnectionAdapters
class PostgreSQLAdapter
class QuotingTest < ActiveRecord::TestCase
class QuotingTest < ActiveRecord::PostgreSQLTestCase
def setup
@conn = ActiveRecord::Base.connection
end
......
require "cases/helper"
require 'support/connection_helper'
if ActiveRecord::Base.connection.supports_ranges?
if ActiveRecord::Base.connection.respond_to?(:supports_ranges?) && ActiveRecord::Base.connection.supports_ranges?
class PostgresqlRange < ActiveRecord::Base
self.table_name = "postgresql_ranges"
end
class PostgresqlRangeTest < ActiveRecord::TestCase
class PostgresqlRangeTest < ActiveRecord::PostgreSQLTestCase
self.use_transactional_tests = false
include ConnectionHelper
......
require 'cases/helper'
require 'support/connection_helper'
class PostgreSQLReferentialIntegrityTest < ActiveRecord::TestCase
class PostgreSQLReferentialIntegrityTest < ActiveRecord::PostgreSQLTestCase
self.use_transactional_tests = false
include ConnectionHelper
......
require "cases/helper"
class PostgresqlRenameTableTest < ActiveRecord::TestCase
class PostgresqlRenameTableTest < ActiveRecord::PostgreSQLTestCase
def setup
@connection = ActiveRecord::Base.connection
@connection.create_table :before_rename, force: true
......
......@@ -3,7 +3,7 @@
class SchemaThing < ActiveRecord::Base
end
class SchemaAuthorizationTest < ActiveRecord::TestCase
class SchemaAuthorizationTest < ActiveRecord::PostgreSQLTestCase
self.use_transactional_tests = false
TABLE_NAME = 'schema_things'
......
......@@ -2,7 +2,7 @@
require 'models/default'
require 'support/schema_dumping_helper'
class SchemaTest < ActiveRecord::TestCase
class SchemaTest < ActiveRecord::PostgreSQLTestCase
self.use_transactional_tests = false
SCHEMA_NAME = 'test_schema'
......@@ -441,7 +441,7 @@ def bind_param(value)
end
end
class SchemaForeignKeyTest < ActiveRecord::TestCase
class SchemaForeignKeyTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
setup do
......@@ -466,7 +466,7 @@ def test_dump_foreign_key_targeting_different_schema
end
end
class DefaultsUsingMultipleSchemasAndDomainTest < ActiveSupport::TestCase
class DefaultsUsingMultipleSchemasAndDomainTest < ActiveRecord::PostgreSQLTestCase
setup do
@connection = ActiveRecord::Base.connection
@connection.execute "DROP SCHEMA IF EXISTS schema_1 CASCADE"
......
require "cases/helper"
require 'support/schema_dumping_helper'
class PostgresqlSerialTest < ActiveRecord::TestCase
class PostgresqlSerialTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
class PostgresqlSerial < ActiveRecord::Base; end
......@@ -30,7 +30,7 @@ def test_schema_dump_with_shorthand
end
end
class PostgresqlBigSerialTest < ActiveRecord::TestCase
class PostgresqlBigSerialTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
class PostgresqlBigSerial < ActiveRecord::Base; end
......
......@@ -13,7 +13,7 @@ def status
end
end
class StatementPoolTest < ActiveRecord::TestCase
class StatementPoolTest < ActiveRecord::PostgreSQLTestCase
if Process.respond_to?(:fork)
def test_cache_is_per_pid
cache = StatementPool.new nil, 10
......
......@@ -2,7 +2,7 @@
require 'models/developer'
require 'models/topic'
class PostgresqlTimestampTest < ActiveRecord::TestCase
class PostgresqlTimestampTest < ActiveRecord::PostgreSQLTestCase
class PostgresqlTimestampWithZone < ActiveRecord::Base; end
self.use_transactional_tests = false
......@@ -43,7 +43,7 @@ def test_timestamp_with_zone_values_without_rails_time_zone_support
end
end
class TimestampTest < ActiveRecord::TestCase
class PostgresqlTimestampFixtureTest < ActiveRecord::PostgreSQLTestCase
fixtures :topics
def test_group_by_date
......
require 'cases/helper'
class PostgresqlTypeLookupTest < ActiveRecord::TestCase
class PostgresqlTypeLookupTest < ActiveRecord::PostgreSQLTestCase
setup do
@connection = ActiveRecord::Base.connection
end
......
require 'cases/helper'
require 'active_record/connection_adapters/postgresql/utils'
class PostgreSQLUtilsTest < ActiveSupport::TestCase
class PostgreSQLUtilsTest < ActiveRecord::PostgreSQLTestCase
Name = ActiveRecord::ConnectionAdapters::PostgreSQL::Name
include ActiveRecord::ConnectionAdapters::PostgreSQL::Utils
......@@ -20,7 +21,7 @@ def test_extract_schema_qualified_name
end
end
class PostgreSQLNameTest < ActiveSupport::TestCase
class PostgreSQLNameTest < ActiveRecord::PostgreSQLTestCase
Name = ActiveRecord::ConnectionAdapters::PostgreSQL::Name
test "represents itself as schema.name" do
......
......@@ -11,7 +11,7 @@ def drop_table(name)
end
end
class PostgresqlUUIDTest < ActiveRecord::TestCase
class PostgresqlUUIDTest < ActiveRecord::PostgreSQLTestCase
include PostgresqlUUIDHelper
include SchemaDumpingHelper
......@@ -135,7 +135,7 @@ def self.name
end
end
class PostgresqlUUIDGenerationTest < ActiveRecord::TestCase
class PostgresqlUUIDGenerationTest < ActiveRecord::PostgreSQLTestCase
include PostgresqlUUIDHelper
include SchemaDumpingHelper
......@@ -210,7 +210,7 @@ def test_schema_dumper_for_uuid_primary_key_with_custom_default
end
end
class PostgresqlUUIDTestNilDefault < ActiveRecord::TestCase
class PostgresqlUUIDTestNilDefault < ActiveRecord::PostgreSQLTestCase
include PostgresqlUUIDHelper
include SchemaDumpingHelper
......@@ -244,7 +244,7 @@ def test_schema_dumper_for_uuid_primary_key_with_default_override_via_nil
end
end
class PostgresqlUUIDTestInverseOf < ActiveRecord::TestCase
class PostgresqlUUIDTestInverseOf < ActiveRecord::PostgreSQLTestCase
include PostgresqlUUIDHelper
class UuidPost < ActiveRecord::Base
......
require "cases/helper"
require "cases/view_test"
class UpdateableViewTest < ActiveRecord::TestCase
class UpdateableViewTest < ActiveRecord::PostgreSQLTestCase
fixtures :books
class PrintedBook < ActiveRecord::Base
......@@ -46,8 +46,9 @@ def test_update_record_to_fail_view_conditions
end
end
if ActiveRecord::Base.connection.supports_materialized_views?
class MaterializedViewTest < ActiveRecord::TestCase
if ActiveRecord::Base.connection.respond_to?(:supports_materialized_views?) &&
ActiveRecord::Base.connection.supports_materialized_views?
class MaterializedViewTest < ActiveRecord::PostgreSQLTestCase
include ViewBehavior
private
......
require 'cases/helper'
require 'support/schema_dumping_helper'
class PostgresqlXMLTest < ActiveRecord::TestCase
class PostgresqlXMLTest < ActiveRecord::PostgreSQLTestCase
include SchemaDumpingHelper
class XmlDataType < ActiveRecord::Base
self.table_name = 'xml_data_type'
......
require "cases/helper"
require 'support/schema_dumping_helper'
class SQLite3CollationTest < ActiveRecord::TestCase
class SQLite3CollationTest < ActiveRecord::SQLite3TestCase
include SchemaDumpingHelper
def setup
......
require "cases/helper"
class CopyTableTest < ActiveRecord::TestCase
class CopyTableTest < ActiveRecord::SQLite3TestCase
fixtures :customers
def setup
......
......@@ -5,7 +5,7 @@
module ActiveRecord
module ConnectionAdapters
class SQLite3Adapter
class ExplainTest < ActiveRecord::TestCase
class ExplainTest < ActiveRecord::SQLite3TestCase
fixtures :developers
def test_explain_for_one_query
......
......@@ -6,7 +6,7 @@
module ActiveRecord
module ConnectionAdapters
class SQLite3Adapter
class QuotingTest < ActiveRecord::TestCase
class QuotingTest < ActiveRecord::SQLite3TestCase
def setup
@conn = Base.sqlite3_connection :database => ':memory:',
:adapter => 'sqlite3',
......
......@@ -5,7 +5,7 @@
module ActiveRecord
module ConnectionAdapters
class SQLite3AdapterTest < ActiveRecord::TestCase
class SQLite3AdapterTest < ActiveRecord::SQLite3TestCase
include DdlHelper
self.use_transactional_tests = false
......
......@@ -3,7 +3,7 @@
module ActiveRecord
module ConnectionAdapters
class SQLite3CreateFolder < ActiveRecord::TestCase
class SQLite3CreateFolder < ActiveRecord::SQLite3TestCase
def test_sqlite_creates_directory
Dir.mktmpdir do |dir|
dir = Pathname.new(dir)
......
......@@ -2,7 +2,7 @@
module ActiveRecord::ConnectionAdapters
class SQLite3Adapter
class StatementPoolTest < ActiveRecord::TestCase
class StatementPoolTest < ActiveRecord::SQLite3TestCase
if Process.respond_to?(:fork)
def test_cache_is_per_pid
......@@ -22,4 +22,3 @@ def test_cache_is_per_pid
end
end
end
......@@ -65,6 +65,30 @@ def has_column?(model, column_name)
end
end
class PostgreSQLTestCase < TestCase
def self.run(*args)
super if current_adapter?(:PostgreSQLAdapter)
end
end
class Mysql2TestCase < TestCase
def self.run(*args)
super if current_adapter?(:Mysql2Adapter)
end
end
class MysqlTestCase < TestCase
def self.run(*args)
super if current_adapter?(:MysqlAdapter)
end
end
class SQLite3TestCase < TestCase
def self.run(*args)
super if current_adapter?(:SQLite3Adapter)
end
end
class SQLCounter
class << self
attr_accessor :ignored_sql, :log, :log_all
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册