Skip to content

Commit ce1806d

Browse files
authored
Merge pull request rails#44484 from rails/sql-assertions
Implicitly assert no exception is raised in `assert_queries` & al
2 parents 15a2ff1 + e26372b commit ce1806d

File tree

6 files changed

+22
-20
lines changed

6 files changed

+22
-20
lines changed

actiontext/test/test_helper.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@
2222
end
2323

2424
class ActiveSupport::TestCase
25-
def assert_queries(expected_count)
25+
def assert_queries(expected_count, &block)
2626
ActiveRecord::Base.connection.materialize_transactions
2727

2828
queries = []
2929
ActiveSupport::Notifications.subscribe("sql.active_record") do |*, payload|
3030
queries << payload[:sql] unless %w[ SCHEMA TRANSACTION ].include?(payload[:name])
3131
end
3232

33-
yield.tap do
34-
assert_equal expected_count, queries.size, "#{queries.size} instead of #{expected_count} queries were executed. #{queries.inspect}"
35-
end
33+
result = _assert_nothing_raised_or_warn("assert_queries", &block)
34+
assert_equal expected_count, queries.size, "#{queries.size} instead of #{expected_count} queries were executed. #{queries.inspect}"
35+
result
3636
end
3737

3838
def assert_no_queries(&block)

actionview/test/activerecord/relation_cache_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ def test_cache_relation_other
2525

2626
def view_cache_dependencies; []; end
2727

28-
def assert_queries(num)
28+
def assert_queries(num, &block)
2929
ActiveRecord::Base.connection.materialize_transactions
3030
count = 0
3131

3232
ActiveSupport::Notifications.subscribe("sql.active_record") do |_name, _start, _finish, _id, payload|
3333
count += 1 unless ["SCHEMA", "TRANSACTION"].include? payload[:name]
3434
end
3535

36-
result = yield
36+
result = _assert_nothing_raised_or_warn("assert_queries", &block)
3737
assert_equal num, count, "#{count} instead of #{num} queries were executed."
3838
result
3939
end

activerecord/test/cases/query_cache_test.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -489,9 +489,11 @@ def test_query_cache_does_not_allow_sql_key_mutation
489489
payload[:sql].downcase!
490490
end
491491

492-
assert_raises FrozenError do
493-
ActiveRecord::Base.cache do
494-
assert_queries(1) { Task.find(1); Task.find(1) }
492+
ActiveRecord::Base.cache do
493+
assert_queries(1) do
494+
assert_raises FrozenError do
495+
Task.find(1)
496+
end
495497
end
496498
end
497499
ensure

activerecord/test/cases/test_case.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,20 @@ def capture_sql
3838
end
3939

4040
def assert_sql(*patterns_to_match, &block)
41-
capture_sql(&block)
42-
ensure
41+
_assert_nothing_raised_or_warn("assert_sql") { capture_sql(&block) }
42+
4343
failed_patterns = []
4444
patterns_to_match.each do |pattern|
4545
failed_patterns << pattern unless SQLCounter.log_all.any? { |sql| pattern === sql }
4646
end
4747
assert failed_patterns.empty?, "Query pattern(s) #{failed_patterns.map(&:inspect).join(', ')} not found.#{SQLCounter.log.size == 0 ? '' : "\nQueries:\n#{SQLCounter.log.join("\n")}"}"
4848
end
4949

50-
def assert_queries(num = 1, options = {})
50+
def assert_queries(num = 1, options = {}, &block)
5151
ignore_none = options.fetch(:ignore_none) { num == :any }
5252
ActiveRecord::Base.connection.materialize_transactions
5353
SQLCounter.clear_log
54-
x = yield
54+
x = _assert_nothing_raised_or_warn("assert_queries", &block)
5555
the_log = ignore_none ? SQLCounter.log_all : SQLCounter.log
5656
if num == :any
5757
assert_operator the_log.size, :>=, 1, "1 or more queries expected, but none were executed."

activerecord/test/cases/transactions_test.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,9 +1121,9 @@ def test_savepoint_does_not_materialize_transaction
11211121
end
11221122

11231123
def test_raising_does_not_materialize_transaction
1124-
assert_raise(RuntimeError) do
1125-
assert_no_queries do
1126-
Topic.transaction { raise }
1124+
assert_no_queries do
1125+
assert_raise(RuntimeError) do
1126+
Topic.transaction { raise "Expected" }
11271127
end
11281128
end
11291129
end

activestorage/test/test_helper.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,17 @@ class ActiveSupport::TestCase
6161
ActiveStorage::Current.reset
6262
end
6363

64-
def assert_queries(expected_count)
64+
def assert_queries(expected_count, &block)
6565
ActiveRecord::Base.connection.materialize_transactions
6666

6767
queries = []
6868
ActiveSupport::Notifications.subscribe("sql.active_record") do |*, payload|
6969
queries << payload[:sql] unless %w[ SCHEMA TRANSACTION ].include?(payload[:name])
7070
end
7171

72-
yield.tap do
73-
assert_equal expected_count, queries.size, "#{queries.size} instead of #{expected_count} queries were executed. #{queries.inspect}"
74-
end
72+
result = _assert_nothing_raised_or_warn("assert_queries", &block)
73+
assert_equal expected_count, queries.size, "#{queries.size} instead of #{expected_count} queries were executed. #{queries.inspect}"
74+
result
7575
end
7676

7777
def assert_no_queries(&block)

0 commit comments

Comments
 (0)