summaryrefslogtreecommitdiff
path: root/tests/select_related
diff options
context:
space:
mode:
authorKen Nzioka <nzioker@gmail.com>2025-10-22 10:48:23 +0300
committerJacob Walls <jacobtylerwalls@gmail.com>2025-10-24 15:51:39 -0400
commit3ff32c50d143d8a498f9a5dfef1a31b16a7456fe (patch)
tree2628df0c8f20f687559d1bd6de65d3152aad00ae /tests/select_related
parent6fcbbe0b855d8701a4da1b65772ccf326f996b9e (diff)
Fixed #36674 -- Fixed memory leak in select_related().
Diffstat (limited to 'tests/select_related')
-rw-r--r--tests/select_related/tests.py19
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