Fix #expect_query test helper for Ruby 3.3+ #5981
Open
+18
−18
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The #expect_query test helper is basically broken on Ruby 3.3+. I'm not sure how CI tests are even passing with it in its current form... probably Mongoid is not running Ruby 3.3 / Ruby 3.4 tests properly.
I encountered this while testing older Mongoid versions--7.5, 8.0, etc.--on Ruby 3.3/3.4. Several tests which call this helper deterministically fail. To reproduce, you can check out this commit, then run the tests for
Mongoid::Association::Referenced::BelongsTo::Eager
.It appears the reason it broke it due to Ruby 3.3's "Object Shapes" changes which affected how method interception used by RSpec's .and_call_original works, creating an infinite loop of interception.