Skip to content

Commit

Permalink
Except SCHEMA SQLs in capture_sql
Browse files Browse the repository at this point in the history
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 }
```
  • Loading branch information
kamipo committed May 21, 2019
1 parent 973096b commit 0810c07
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion activerecord/test/cases/test_case.rb
Expand Up @@ -34,7 +34,7 @@ def capture_sql
ActiveRecord::Base.connection.materialize_transactions
SQLCounter.clear_log
yield
SQLCounter.log_all.dup
SQLCounter.log.dup
end

def assert_sql(*patterns_to_match)
Expand Down

0 comments on commit 0810c07

Please sign in to comment.