diff --git a/actiontext/test/test_helper.rb b/actiontext/test/test_helper.rb index 9aca998e1b..d49cede085 100644 --- a/actiontext/test/test_helper.rb +++ b/actiontext/test/test_helper.rb @@ -22,7 +22,7 @@ if ActiveSupport::TestCase.respond_to?(:fixture_path=) end class ActiveSupport::TestCase - def assert_queries(expected_count) + def assert_queries(expected_count, &block) ActiveRecord::Base.connection.materialize_transactions queries = [] @@ -30,9 +30,9 @@ class ActiveSupport::TestCase queries << payload[:sql] unless %w[ SCHEMA TRANSACTION ].include?(payload[:name]) end - yield.tap do - assert_equal expected_count, queries.size, "#{queries.size} instead of #{expected_count} queries were executed. #{queries.inspect}" - end + result = _assert_nothing_raised_or_warn("assert_queries", &block) + assert_equal expected_count, queries.size, "#{queries.size} instead of #{expected_count} queries were executed. #{queries.inspect}" + result end def assert_no_queries(&block) diff --git a/actionview/test/activerecord/relation_cache_test.rb b/actionview/test/activerecord/relation_cache_test.rb index 26f3bfbcbc..7d029affde 100644 --- a/actionview/test/activerecord/relation_cache_test.rb +++ b/actionview/test/activerecord/relation_cache_test.rb @@ -25,7 +25,7 @@ class RelationCacheTest < ActionView::TestCase def view_cache_dependencies; []; end - def assert_queries(num) + def assert_queries(num, &block) ActiveRecord::Base.connection.materialize_transactions count = 0 @@ -33,7 +33,7 @@ class RelationCacheTest < ActionView::TestCase count += 1 unless ["SCHEMA", "TRANSACTION"].include? payload[:name] end - result = yield + result = _assert_nothing_raised_or_warn("assert_queries", &block) assert_equal num, count, "#{count} instead of #{num} queries were executed." result end diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb index a2868dd8c5..1bc37024fc 100644 --- a/activerecord/test/cases/query_cache_test.rb +++ b/activerecord/test/cases/query_cache_test.rb @@ -489,9 +489,11 @@ class QueryCacheTest < ActiveRecord::TestCase payload[:sql].downcase! end - assert_raises FrozenError do - ActiveRecord::Base.cache do - assert_queries(1) { Task.find(1); Task.find(1) } + ActiveRecord::Base.cache do + assert_queries(1) do + assert_raises FrozenError do + Task.find(1) + end end end ensure diff --git a/activerecord/test/cases/test_case.rb b/activerecord/test/cases/test_case.rb index 33923c4b66..741f205b91 100644 --- a/activerecord/test/cases/test_case.rb +++ b/activerecord/test/cases/test_case.rb @@ -38,8 +38,8 @@ module ActiveRecord end def assert_sql(*patterns_to_match, &block) - capture_sql(&block) - ensure + _assert_nothing_raised_or_warn("assert_sql") { capture_sql(&block) } + failed_patterns = [] patterns_to_match.each do |pattern| failed_patterns << pattern unless SQLCounter.log_all.any? { |sql| pattern === sql } @@ -47,11 +47,11 @@ module ActiveRecord assert failed_patterns.empty?, "Query pattern(s) #{failed_patterns.map(&:inspect).join(', ')} not found.#{SQLCounter.log.size == 0 ? '' : "\nQueries:\n#{SQLCounter.log.join("\n")}"}" end - def assert_queries(num = 1, options = {}) + def assert_queries(num = 1, options = {}, &block) ignore_none = options.fetch(:ignore_none) { num == :any } ActiveRecord::Base.connection.materialize_transactions SQLCounter.clear_log - x = yield + x = _assert_nothing_raised_or_warn("assert_queries", &block) the_log = ignore_none ? SQLCounter.log_all : SQLCounter.log if num == :any assert_operator the_log.size, :>=, 1, "1 or more queries expected, but none were executed." diff --git a/activerecord/test/cases/transactions_test.rb b/activerecord/test/cases/transactions_test.rb index 12f3ab8a51..7e2baa93f4 100644 --- a/activerecord/test/cases/transactions_test.rb +++ b/activerecord/test/cases/transactions_test.rb @@ -1121,9 +1121,9 @@ class TransactionTest < ActiveRecord::TestCase end def test_raising_does_not_materialize_transaction - assert_raise(RuntimeError) do - assert_no_queries do - Topic.transaction { raise } + assert_no_queries do + assert_raise(RuntimeError) do + Topic.transaction { raise "Expected" } end end end diff --git a/activestorage/test/test_helper.rb b/activestorage/test/test_helper.rb index 9840c3ae7f..39cd5905f6 100644 --- a/activestorage/test/test_helper.rb +++ b/activestorage/test/test_helper.rb @@ -61,7 +61,7 @@ class ActiveSupport::TestCase ActiveStorage::Current.reset end - def assert_queries(expected_count) + def assert_queries(expected_count, &block) ActiveRecord::Base.connection.materialize_transactions queries = [] @@ -69,9 +69,9 @@ class ActiveSupport::TestCase queries << payload[:sql] unless %w[ SCHEMA TRANSACTION ].include?(payload[:name]) end - yield.tap do - assert_equal expected_count, queries.size, "#{queries.size} instead of #{expected_count} queries were executed. #{queries.inspect}" - end + result = _assert_nothing_raised_or_warn("assert_queries", &block) + assert_equal expected_count, queries.size, "#{queries.size} instead of #{expected_count} queries were executed. #{queries.inspect}" + result end def assert_no_queries(&block)