From 2425f6fda099a2134dbf72c8a30270cc9a659f1e Mon Sep 17 00:00:00 2001 From: Aymeric Augustin <aymeric.augustin@m4x.org> Date: Sat, 12 Sep 2015 20:58:26 +0200 Subject: [PATCH] Prevented --parallel from crashing on Windows. Since --parallel is documented not to work on Windows, it's better to ignore it and run without parallelization than to crash. For example this could simplify cross-platform test scripts. --- django/test/runner.py | 5 +++++ tests/runtests.py | 5 +---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/django/test/runner.py b/django/test/runner.py index 1baad7c622..97fadedbc4 100644 --- a/django/test/runner.py +++ b/django/test/runner.py @@ -211,6 +211,11 @@ def default_test_processes(): """ Default number of test processes when using the --parallel option. """ + # The current implementation of the parallel test runner requires + # multiprocessing to start subprocesses with fork(). + # On Python 3.4+: if multiprocessing.get_start_method() != 'fork': + if not hasattr(os, 'fork'): + return 1 try: return int(os.environ['DJANGO_TEST_PROCESSES']) except KeyError: diff --git a/tests/runtests.py b/tests/runtests.py index 4d6e22e3b2..cfc8722ae2 100755 --- a/tests/runtests.py +++ b/tests/runtests.py @@ -236,11 +236,8 @@ def teardown(state): def actual_test_processes(parallel): if parallel == 0: - # On Python 3.4+: if multiprocessing.get_start_method() != 'fork': - if not hasattr(os, 'fork'): - return 1 # This doesn't work before django.setup() on some databases. - elif all(conn.features.can_clone_databases for conn in connections.all()): + if all(conn.features.can_clone_databases for conn in connections.all()): return default_test_processes() else: return 1