Enabled parallel testing by default in runtests.py.

This commit is contained in:
Aymeric Augustin 2015-09-06 11:12:08 +02:00
parent 39bb66baad
commit 33c7c2a557
8 changed files with 45 additions and 6 deletions

View file

@ -12,7 +12,7 @@ from argparse import ArgumentParser
import django
from django.apps import apps
from django.conf import settings
from django.db import connection
from django.db import connection, connections
from django.test import TestCase, TransactionTestCase
from django.test.runner import default_test_processes
from django.test.utils import get_runner
@ -103,8 +103,10 @@ def get_installed():
def setup(verbosity, test_labels, parallel):
if verbosity >= 1:
print("Testing against Django installed in '%s' with %d processes" % (
os.path.dirname(django.__file__), parallel))
msg = "Testing against Django installed in '%s'" % os.path.dirname(django.__file__)
if parallel > 1:
msg += " with %d processes" % parallel
print(msg)
# Force declaring available_apps in TransactionTestCase for faster tests.
def no_available_apps(self):
@ -232,6 +234,17 @@ def teardown(state):
setattr(settings, key, value)
def actual_test_processes(parallel):
if parallel == 0:
# This doesn't work before django.setup() on some databases.
if all(conn.features.can_clone_databases for conn in connections.all()):
return default_test_processes()
else:
return 1
else:
return parallel
def django_tests(verbosity, interactive, failfast, keepdb, reverse,
test_labels, debug_sql, parallel):
state = setup(verbosity, test_labels, parallel)
@ -249,7 +262,7 @@ def django_tests(verbosity, interactive, failfast, keepdb, reverse,
keepdb=keepdb,
reverse=reverse,
debug_sql=debug_sql,
parallel=parallel,
parallel=actual_test_processes(parallel),
)
failures = test_runner.run_tests(
test_labels or get_installed(),
@ -396,7 +409,7 @@ if __name__ == "__main__":
'--debug-sql', action='store_true', dest='debug_sql', default=False,
help='Turn on the SQL query logger within tests.')
parser.add_argument(
'--parallel', dest='parallel', nargs='?', default=1, type=int,
'--parallel', dest='parallel', nargs='?', default=0, type=int,
const=default_test_processes(),
help='Run tests in parallel processes.')