On Thursday, July 18, 2013 7:30:55 PM UTC-7, Matt McClure wrote: > 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+unsubscr...@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.