From 0d5b069baf6e5e52f6ddb60923c8753ed3e29689 Mon Sep 17 00:00:00 2001 From: Matias Grunberg Date: Tue, 20 Apr 2021 22:03:28 -0300 Subject: [PATCH 1/3] coerce test because we produce some read queries --- test/cases/coerced_tests.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/test/cases/coerced_tests.rb b/test/cases/coerced_tests.rb index e6a44ef5f..e6158c12b 100644 --- a/test/cases/coerced_tests.rb +++ b/test/cases/coerced_tests.rb @@ -47,10 +47,17 @@ def test_value_limit_violations_are_translated_to_specific_exception_coerced module ActiveRecord class AdapterPreventWritesTest < ActiveRecord::TestCase # Fix randomly failing test. The loading of the model's schema was affecting the test. + # Also, we do some read queries. Remove assert_no_queries coerce_tests! :test_errors_when_an_insert_query_is_called_while_preventing_writes def test_errors_when_an_insert_query_is_called_while_preventing_writes_coerced Subscriber.send(:load_schema!) - original_test_errors_when_an_insert_query_is_called_while_preventing_writes + assert_raises(ActiveRecord::ReadOnlyError) do + ActiveRecord::Base.while_preventing_writes do + @connection.transaction do + @connection.insert("INSERT INTO subscribers(nick) VALUES ('138853948594')", nil, false) + end + end + end end end end From 422b28b8d6b334791928b10c62887d79c2cf8a4f Mon Sep 17 00:00:00 2001 From: Matias Grunberg Date: Tue, 20 Apr 2021 22:03:38 -0300 Subject: [PATCH 2/3] coerce test because we open less transactions --- test/cases/coerced_tests.rb | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/cases/coerced_tests.rb b/test/cases/coerced_tests.rb index e6158c12b..5ee1059d2 100644 --- a/test/cases/coerced_tests.rb +++ b/test/cases/coerced_tests.rb @@ -1674,3 +1674,31 @@ def marshal_fixture_path(file_name) ) end end + +class BasePreventWritesTest < ActiveRecord::TestCase + # We open one transaction, not two. Same as original but checking one query + coerce_tests! %r{an empty transaction does not raise if preventing writes} + test "an empty transaction does not raise if preventing writes coerced" do + ActiveRecord::Base.while_preventing_writes do + assert_queries(1, ignore_none: true) do + Bird.transaction do + ActiveRecord::Base.connection.materialize_transactions + end + end + end + end +end + +class BasePreventWritesLegacyTest < ActiveRecord::TestCase + # We open one transaction, not two. Same as original but checking one query + coerce_tests! %r{an empty transaction does not raise if preventing writes} + test "an empty transaction does not raise if preventing writes coerced" do + ActiveRecord::Base.connection_handler.while_preventing_writes do + assert_queries(1, ignore_none: true) do + Bird.transaction do + ActiveRecord::Base.connection.materialize_transactions + end + end + end + end +end From a0d18d947cfb2e5d3e1b14e01bd0dbdd86500f16 Mon Sep 17 00:00:00 2001 From: Matias Grunberg Date: Wed, 21 Apr 2021 10:08:10 -0300 Subject: [PATCH 3/3] change coerced test --- test/cases/coerced_tests.rb | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/test/cases/coerced_tests.rb b/test/cases/coerced_tests.rb index aaf15614d..afbfef5aa 100644 --- a/test/cases/coerced_tests.rb +++ b/test/cases/coerced_tests.rb @@ -47,17 +47,10 @@ def test_value_limit_violations_are_translated_to_specific_exception_coerced module ActiveRecord class AdapterPreventWritesTest < ActiveRecord::TestCase # Fix randomly failing test. The loading of the model's schema was affecting the test. - # Also, we do some read queries. Remove assert_no_queries coerce_tests! :test_errors_when_an_insert_query_is_called_while_preventing_writes def test_errors_when_an_insert_query_is_called_while_preventing_writes_coerced Subscriber.send(:load_schema!) - assert_raises(ActiveRecord::ReadOnlyError) do - ActiveRecord::Base.while_preventing_writes do - @connection.transaction do - @connection.insert("INSERT INTO subscribers(nick) VALUES ('138853948594')", nil, false) - end - end - end + original_test_errors_when_an_insert_query_is_called_while_preventing_writes end end end @@ -75,6 +68,12 @@ def test_errors_when_an_insert_query_prefixed_by_a_slash_star_comment_is_called_ end end end + + coerce_tests! :test_errors_when_an_insert_query_prefixed_by_a_double_dash_comment_containing_read_command_is_called_while_preventing_writes + def test_errors_when_an_insert_query_prefixed_by_a_double_dash_comment_containing_read_command_is_called_while_preventing_writes_coerced + Subscriber.send(:load_schema!) + original_test_errors_when_an_insert_query_prefixed_by_a_double_dash_comment_containing_read_command_is_called_while_preventing_writes + end end end