diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2015-09-06 11:12:08 +0200 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2015-09-10 13:34:05 +0200 |
| commit | 33c7c2a55770fe8ccc297a8ae13e04487b72b3a1 (patch) | |
| tree | f3cd4f169ae8cea6d0b060af3800968e7fd05617 /tests | |
| parent | 39bb66baad1b98e0fa10d668a09154a0f5372b3d (diff) | |
Enabled parallel testing by default in runtests.py.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/requirements/base.txt | 1 | ||||
| -rwxr-xr-x | tests/runtests.py | 23 |
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.') |
