From 0810c076de0d9b7879ee240bb08d31fb7c2f5ac9 Mon Sep 17 00:00:00 2001
From: Ryuta Kamizono <kamipo@gmail.com>
Date: Tue, 21 May 2019 23:25:14 +0900
Subject: Except SCHEMA SQLs in `capture_sql`

Testing the result of `capture_sql` is fragile, it is due to whether
SCHEMA SQLs are executed or not depends on whether schema cache is
filled or not.

https://buildkite.com/rails/rails/builds/61248#a5b9dc59-ff0c-40c0-b56e-0895662fbc4c/993-1004
https://buildkite.com/rails/rails/builds/61248#1157b389-f2c7-4554-b6e5-a37624a0e74a/996-1005

I've confirmed all `capture_sql` use cases in our code base, all cases
won't expect SCHEMA SQLs are included.

```
% git grep -n capture_sql
test/cases/associations/belongs_to_associations_test.rb:202:    sql = capture_sql { comment.post }
test/cases/associations/belongs_to_associations_test.rb:204:    assert_not_equal sql, capture_sql { comment.post }
test/cases/associations/has_many_associations_test.rb:169:    sql = capture_sql { post.comments.to_a }
test/cases/associations/has_many_associations_test.rb:171:    assert_not_equal sql, capture_sql { post.comments.to_a }
test/cases/associations/has_many_associations_test.rb:276:    expected_sql = capture_sql { author.thinking_posts.delete_all }
test/cases/associations/has_many_associations_test.rb:281:    loaded_sql = capture_sql { author.thinking_posts.delete_all }
test/cases/associations/has_many_associations_test.rb:289:    expected_sql = capture_sql { author.posts.delete_all }
test/cases/associations/has_many_associations_test.rb:294:    loaded_sql = capture_sql { author.posts.delete_all }
test/cases/associations/left_outer_join_association_test.rb:22:      queries = capture_sql do
test/cases/associations/left_outer_join_association_test.rb:49:    queries = capture_sql { Author.left_outer_joins(:posts).to_a }
test/cases/associations/left_outer_join_association_test.rb:54:    queries = capture_sql { Author.joins(:posts).left_outer_joins(:posts).to_a }
test/cases/associations/left_outer_join_association_test.rb:60:    queries = capture_sql { Author.left_outer_joins({}).to_a }
test/cases/associations/left_outer_join_association_test.rb:65:    queries = capture_sql { Author.left_outer_joins([]).to_a }
test/cases/associations/left_outer_join_association_test.rb:78:    queries = capture_sql { Author.left_outer_joins(:essays).to_a }
test/cases/associations_test.rb:384:    log = capture_sql do
test/cases/associations_test.rb:399:    log = capture_sql do
test/cases/associations_test.rb:414:    log = capture_sql do
test/cases/associations_test.rb:429:    log = capture_sql do
test/cases/associations_test.rb:444:    log = capture_sql do
test/cases/associations_test.rb:459:    log = capture_sql do
test/cases/reflection_test.rb:307:    expected_sql = capture_sql { hotel.recipes.to_a }
test/cases/reflection_test.rb:312:    loaded_sql = capture_sql { hotel.recipes.to_a }
test/cases/relation_test.rb:212:      queries = capture_sql { Author.joins(:posts).merge(Post.joins(:comments)).to_a }
test/cases/relation_test.rb:232:      queries = capture_sql { Post.joins(:author, :categorizations).merge(Author.select(:id)).merge(categorizations_with_authors).to_a }
test/cases/relation_test.rb:347:      log = capture_sql do
test/cases/scoping/relation_scoping_test.rb:146:      log = capture_sql do
test/cases/scoping/relation_scoping_test.rb:159:    log = capture_sql do
test/cases/test_case.rb:33:    def capture_sql
test/cases/test_case.rb:41:      capture_sql { yield }
```
---
 activerecord/test/cases/test_case.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'activerecord')

diff --git a/activerecord/test/cases/test_case.rb b/activerecord/test/cases/test_case.rb
index 81f7226718..1b8bad32a4 100644
--- a/activerecord/test/cases/test_case.rb
+++ b/activerecord/test/cases/test_case.rb
@@ -34,7 +34,7 @@ module ActiveRecord
       ActiveRecord::Base.connection.materialize_transactions
       SQLCounter.clear_log
       yield
-      SQLCounter.log_all.dup
+      SQLCounter.log.dup
     end
 
     def assert_sql(*patterns_to_match)
-- 
cgit v1.2.3