summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-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