diff options
| author | Ken Nzioka <nzioker@gmail.com> | 2025-10-22 10:48:23 +0300 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2025-10-24 15:51:39 -0400 |
| commit | 3ff32c50d143d8a498f9a5dfef1a31b16a7456fe (patch) | |
| tree | 2628df0c8f20f687559d1bd6de65d3152aad00ae /tests/select_related | |
| parent | 6fcbbe0b855d8701a4da1b65772ccf326f996b9e (diff) | |
Fixed #36674 -- Fixed memory leak in select_related().
Diffstat (limited to 'tests/select_related')
| -rw-r--r-- | tests/select_related/tests.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/select_related/tests.py b/tests/select_related/tests.py index 41ed350cf3..59d1270aa0 100644 --- a/tests/select_related/tests.py +++ b/tests/select_related/tests.py @@ -1,6 +1,9 @@ +import gc + from django.core.exceptions import FieldError from django.db.models import FETCH_PEERS from django.test import SimpleTestCase, TestCase +from django.test.utils import garbage_collect from .models import ( Bookmark, @@ -57,6 +60,17 @@ class SelectRelatedTests(TestCase): "Amanita muscaria" ) + def setup_gc_debug(self): + self.addCleanup(gc.set_debug, 0) + self.addCleanup(gc.enable) + gc.disable() + garbage_collect() + gc.set_debug(gc.DEBUG_SAVEALL) + + def assert_no_memory_leaks(self): + garbage_collect() + self.assertEqual(gc.garbage, []) + def test_access_fks_without_select_related(self): """ Normally, accessing FKs doesn't fill in related objects @@ -128,6 +142,11 @@ class SelectRelatedTests(TestCase): ) self.assertEqual(s.id + 10, s.a) + def test_select_related_memory_leak(self): + self.setup_gc_debug() + list(Species.objects.select_related("genus")) + self.assert_no_memory_leaks() + def test_certain_fields(self): """ The optional fields passed to select_related() control which related |
