summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2014-12-14 17:29:34 +0100
committerAymeric Augustin <aymeric.augustin@m4x.org>2014-12-14 17:29:34 +0100
commit0fc188251069b73b293f79dba6f3e9e331ad7e91 (patch)
treeca9414cda9c41f6100ac559c2d8b925e6c07c6f4
parent9495989265306b773fdc7f6ac8d6739c7e294444 (diff)
parent2ca0870b672413cf5bc6e441bda58839f902f5b0 (diff)
Merge pull request #3730 from tchaumeny/test_suite_reorder
Fixed #23992 -- Optimized reorder_suite functions using OrderedSet
-rw-r--r--django/test/runner.py16
1 files changed, 8 insertions, 8 deletions
diff --git a/django/test/runner.py b/django/test/runner.py
index 654bba668e..65f55c4176 100644
--- a/django/test/runner.py
+++ b/django/test/runner.py
@@ -7,6 +7,7 @@ from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
from django.test import SimpleTestCase, TestCase
from django.test.utils import setup_test_environment, teardown_test_environment
+from django.utils.datastructures import OrderedSet
class DiscoverRunner(object):
@@ -231,11 +232,12 @@ def reorder_suite(suite, classes, reverse=False):
"""
class_count = len(classes)
suite_class = type(suite)
- bins = [suite_class() for i in range(class_count + 1)]
+ bins = [OrderedSet() for i in range(class_count + 1)]
partition_suite(suite, classes, bins, reverse=reverse)
- for i in range(class_count):
- bins[0].addTests(bins[i + 1])
- return bins[0]
+ reordered_suite = suite_class()
+ for i in range(class_count + 1):
+ reordered_suite.addTests(bins[i])
+ return reordered_suite
def partition_suite(suite, classes, bins, reverse=False):
@@ -258,12 +260,10 @@ def partition_suite(suite, classes, bins, reverse=False):
else:
for i in range(len(classes)):
if isinstance(test, classes[i]):
- if test not in bins[i]:
- bins[i].addTest(test)
+ bins[i].add(test)
break
else:
- if test not in bins[-1]:
- bins[-1].addTest(test)
+ bins[-1].add(test)
def setup_databases(verbosity, interactive, keepdb=False, **kwargs):