From 8c1841b306212481be28e76aec03730a73bc2d49 Mon Sep 17 00:00:00 2001 From: Ulysse Buonomo Date: Tue, 27 Aug 2024 16:01:27 +0200 Subject: [PATCH] Fix various tests (#333) - Remove `database_exists?` method from `CockroachDBAdapter`, the original method is fine. - Exclude a test that will be fixed in Rails 7.2 --- Gemfile | 1 - .../connection_adapters/cockroachdb_adapter.rb | 6 ------ test/cases/connection_adapters/type_test.rb | 9 ++++----- .../PostgresqlTransactionNestedTest.rb | 16 ++++++++++++++-- test/excludes/AttributeMethodsTest.rb | 2 ++ 5 files changed, 20 insertions(+), 14 deletions(-) create mode 100644 test/excludes/AttributeMethodsTest.rb diff --git a/Gemfile b/Gemfile index bb239f29..6ddda894 100644 --- a/Gemfile +++ b/Gemfile @@ -62,7 +62,6 @@ group :development, :test do # Gems used by the ActiveRecord test suite gem "bcrypt", "~> 3.1.18" - gem "mocha", "~> 1.14.0" gem "sqlite3", "~> 1.4.4" gem "minitest", "~> 5.15.0" diff --git a/lib/active_record/connection_adapters/cockroachdb_adapter.rb b/lib/active_record/connection_adapters/cockroachdb_adapter.rb index 3f6137e6..7a5a3582 100644 --- a/lib/active_record/connection_adapters/cockroachdb_adapter.rb +++ b/lib/active_record/connection_adapters/cockroachdb_adapter.rb @@ -243,12 +243,6 @@ def supports_deferrable_constraints? # @crdb_version = version_num.to_i # end - def self.database_exists?(config) - !!ActiveRecord::Base.cockroachdb_connection(config) - rescue ActiveRecord::NoDatabaseError - false - end - def initialize(...) super diff --git a/test/cases/connection_adapters/type_test.rb b/test/cases/connection_adapters/type_test.rb index 8b47004a..8aca51cf 100644 --- a/test/cases/connection_adapters/type_test.rb +++ b/test/cases/connection_adapters/type_test.rb @@ -7,10 +7,9 @@ module CockroachDB module ConnectionAdapters class TypeTest < ActiveRecord::TestCase fixtures :accounts - class SqliteModel < ActiveRecord::Base + class FakeModel < ActiveRecord::Base establish_connection( - adapter: "sqlite3", - database: "tmp/some" + adapter: "fake" ) end def test_type_can_be_used_with_various_db @@ -19,8 +18,8 @@ def test_type_can_be_used_with_various_db ActiveRecord::Type.adapter_name_from(Account) ) assert_equal( - :sqlite3, - ActiveRecord::Type.adapter_name_from(SqliteModel) + :fake, + ActiveRecord::Type.adapter_name_from(FakeModel) ) end end diff --git a/test/excludes/ActiveRecord/PostgresqlTransactionNestedTest.rb b/test/excludes/ActiveRecord/PostgresqlTransactionNestedTest.rb index 22838c71..b94764e3 100644 --- a/test/excludes/ActiveRecord/PostgresqlTransactionNestedTest.rb +++ b/test/excludes/ActiveRecord/PostgresqlTransactionNestedTest.rb @@ -1,2 +1,14 @@ -exclude :test_deadlock_raises_Deadlocked_inside_nested_SavepointTransaction, "Causes CI to hand. Skip while debugging." -exclude :test_unserializable_transaction_raises_SerializationFailure_inside_nested_SavepointTransaction, "Causes CI to hand. Skip while debugging." + +# > In CRDB SERIALIZABLE, reads block on in-progress writes for +# > as long as those writes are in progress. However, PG does +# > not have this "read block on write" behavior, and so rather +# > than allowing the left-hand-side to execute, it must instead +# > abort that transaction. Both are valid ways to implement SERIALIZABLE. +# +# See discussion: https://github.com/cockroachdb/activerecord-cockroachdb-adapter/pull/333 +message = "SERIALIZABLE transactions are different in CockroachDB." + +exclude :test_deadlock_raises_Deadlocked_inside_nested_SavepointTransaction, message +exclude :test_unserializable_transaction_raises_SerializationFailure_inside_nested_SavepointTransaction, message +exclude :test_SerializationFailure_inside_nested_SavepointTransaction_is_recoverable, message +exclude :test_deadlock_inside_nested_SavepointTransaction_is_recoverable, message diff --git a/test/excludes/AttributeMethodsTest.rb b/test/excludes/AttributeMethodsTest.rb new file mode 100644 index 00000000..fec54a47 --- /dev/null +++ b/test/excludes/AttributeMethodsTest.rb @@ -0,0 +1,2 @@ +# TODO: Rails 7.2 remove this exclusion +exclude "test_#undefine_attribute_methods_undefines_alias_attribute_methods", "The test will be fixed in 7.2 (https://github.com/rails/rails/commit/a0993f81d0450a191da1ee35282f60fc2899135c)"