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