Share already loaded fixtures across test classes #51001
Merged
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.
self.class
is a fairly narrow cache key, so it doesn't hit that much, but more importantly, since nothing clears that cache, on large test suites it keeps growing extremely large.Using the list of fixtures as a cache key doesn't strictly solve the growth issue, but most classes actually load all fixtures so this should shrink the cache size considerably.Instead we can use the parameters of
load_fixtures
as a cache key, and clear the entire cache when changes, this both improve the hit rate and solves a memory leak.cc @ChrisBr