Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #7339 -- Added manual calls to the garbage collector. This is r…

…equired for PyPy and Jython; these implementations don't use reference counting, so you can't rely on __del__ being run immediately after del is called. Thanks to Maciej Fijalkowski (fijal) and Leo Soto.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@8004 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit b58de151397c3a85002430c34b0dd1b400cede23 1 parent 2f49d18
@freakboy3742 freakboy3742 authored
Showing with 17 additions and 1 deletion.
  1. +17 −1 tests/regressiontests/dispatch/tests/test_dispatcher.py
View
18 tests/regressiontests/dispatch/tests/test_dispatcher.py
@@ -2,6 +2,18 @@
from django.dispatch import dispatcher, robust
import unittest
import copy
+import sys
+import gc
+
+if sys.platform.startswith('java'):
+ def garbage_collect():
+ """Run the garbage collector and wait a bit to let it do his work"""
+ import time
+ gc.collect()
+ time.sleep(0.1)
+else:
+ def garbage_collect():
+ gc.collect()
def x(a):
return a
@@ -21,6 +33,7 @@ class DispatcherTests(unittest.TestCase):
def setUp(self):
# track the initial state, since it's possible that others have bleed receivers in
+ garbage_collect()
self.sendersBack = copy.copy(dispatcher.sendersBack)
self.connections = copy.copy(dispatcher.connections)
self.senders = copy.copy(dispatcher.senders)
@@ -86,6 +99,7 @@ def testGarbageCollected(self):
connect(a.a, signal, b)
expected = []
del a
+ garbage_collect()
result = send('this',b, a=b)
self.assertEqual(result, expected)
self.assertEqual(list(getAllReceivers(b,signal)), [])
@@ -101,6 +115,7 @@ def __call__(self, a):
connect(a, signal, b)
expected = []
del a
+ garbage_collect()
result = send('this',b, a=b)
self.assertEqual(result, expected)
self.assertEqual(list(getAllReceivers(b,signal)), [])
@@ -123,6 +138,7 @@ def testMultipleRegistration(self):
del a
del b
del result
+ garbage_collect()
self._testIsClean()
def testRobust(self):
@@ -141,4 +157,4 @@ def getSuite():
return unittest.makeSuite(DispatcherTests,'test')
if __name__ == "__main__":
- unittest.main ()
+ unittest.main()
Please sign in to comment.
Something went wrong with that request. Please try again.