summaryrefslogtreecommitdiff
path: root/tests/test_runner
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2021-08-03 09:52:32 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-08-03 09:57:04 +0200
commit7e38a8d66f9a4fbbf373de30f1cc6be906502559 (patch)
treee3dbd31919bdf7e31c19e062bd9af96eef4f1067 /tests/test_runner
parent795051b2b04020866fc14c858b77972ef8e5a3e2 (diff)
downloaddjango-7e38a8d66f9a4fbbf373de30f1cc6be906502559.tar.gz
Refs #31621 -- Added more tests for test --parallel option.
Diffstat (limited to 'tests/test_runner')
-rw-r--r--tests/test_runner/test_discover_runner.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/test_runner/test_discover_runner.py b/tests/test_runner/test_discover_runner.py
index 2fc4df3133..327a6625ae 100644
--- a/tests/test_runner/test_discover_runner.py
+++ b/tests/test_runner/test_discover_runner.py
@@ -1,4 +1,5 @@
import logging
+import multiprocessing
import os
import unittest.loader
from argparse import ArgumentParser
@@ -36,6 +37,40 @@ def change_loader_patterns(patterns):
DiscoverRunner.test_loader.testNamePatterns = original_patterns
+# Isolate from the real environment.
+@mock.patch.dict(os.environ, {}, clear=True)
+@mock.patch.object(multiprocessing, 'cpu_count', return_value=12)
+# Python 3.8 on macOS defaults to 'spawn' mode.
+@mock.patch.object(multiprocessing, 'get_start_method', return_value='fork')
+class DiscoverRunnerParallelArgumentTests(SimpleTestCase):
+ def get_parser(self):
+ parser = ArgumentParser()
+ DiscoverRunner.add_arguments(parser)
+ return parser
+
+ def test_parallel_default(self, *mocked_objects):
+ result = self.get_parser().parse_args([])
+ self.assertEqual(result.parallel, 1)
+
+ def test_parallel_flag(self, *mocked_objects):
+ result = self.get_parser().parse_args(['--parallel'])
+ self.assertEqual(result.parallel, 12)
+
+ def test_parallel_count(self, *mocked_objects):
+ result = self.get_parser().parse_args(['--parallel', '17'])
+ self.assertEqual(result.parallel, 17)
+
+ @mock.patch.dict(os.environ, {'DJANGO_TEST_PROCESSES': 'typo'})
+ def test_parallel_env_var_non_int(self, *mocked_objects):
+ with self.assertRaises(ValueError):
+ self.get_parser().parse_args([])
+
+ def test_parallel_spawn(self, mocked_get_start_method, mocked_cpu_count):
+ mocked_get_start_method.return_value = 'spawn'
+ result = self.get_parser().parse_args(['--parallel'])
+ self.assertEqual(result.parallel, 1)
+
+
class DiscoverRunnerTests(SimpleTestCase):
@staticmethod