1. TestSuite. Here's a minimal hack to release the reference that TestSuite would otherwise hold after a TestCase runs until the remainder of the suite had finished.+ self._tests.remove(test)
That turns out to be a bad idea because it modifies a list inside a loop iterating over it, making the loop skip items it should visit. Here's an updated change that doesn't suffer from that problem:
diff --git a/django/utils/unittest/suite.py b/django/utils/unittest/suite.py
index f39569b..8530200 100644
--- a/django/utils/unittest/suite.py
+++ b/django/utils/unittest/suite.py
@@ -1,5 +1,6 @@
"""TestSuite"""
+import gc
import sys
import unittest
from django.utils.unittest import case, util
@@ -96,7 +97,11 @@ class TestSuite(BaseTestSuite):
################################
# private methods
def _wrapped_run(self, result, debug=False):
- for test in self:
+ while True:
+ try:
+ test = self._tests.pop(0)
+ except IndexError:
+ break
if result.shouldStop:
break
@@ -116,6 +121,7 @@ class TestSuite(BaseTestSuite):
test(result)
else:
test.debug()
+ #gc.collect()
def _handleClassSetUp(self, test, result):
previousClass = getattr(result, '_previousTestClass', None)
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.
No comments:
Post a Comment