summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2015-09-06 11:12:08 +0200
committerAymeric Augustin <aymeric.augustin@m4x.org>2015-09-10 13:34:05 +0200
commit33c7c2a55770fe8ccc297a8ae13e04487b72b3a1 (patch)
treef3cd4f169ae8cea6d0b060af3800968e7fd05617 /tests
parent39bb66baad1b98e0fa10d668a09154a0f5372b3d (diff)
Enabled parallel testing by default in runtests.py.
Diffstat (limited to 'tests')
-rw-r--r--tests/requirements/base.txt1
-rwxr-xr-xtests/runtests.py23
2 files changed, 19 insertions, 5 deletions
diff --git a/tests/requirements/base.txt b/tests/requirements/base.txt
index af828306c3..845aefbb87 100644
--- a/tests/requirements/base.txt
+++ b/tests/requirements/base.txt
@@ -8,3 +8,4 @@ PyYAML
pytz > dev
selenium
sqlparse
+tblib
diff --git a/tests/runtests.py b/tests/runtests.py
index 0577737a5f..cfc8722ae2 100755
--- a/tests/runtests.py
+++ b/tests/runtests.py
@@ -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.')