Fixed #32988 -- Prevented creation of more test databases than TestCases.
DiscoverRunner.parallel is used in setup_databases() and
teardown_databases() to control the number of test databases.
Regression in cb6c19749d
.
This commit is contained in:
parent
2d0ae8da80
commit
ab16507f19
|
@ -795,6 +795,9 @@ class DiscoverRunner:
|
||||||
# Since tests are distributed across processes on a per-TestCase
|
# Since tests are distributed across processes on a per-TestCase
|
||||||
# basis, there's no need for more processes than TestCases.
|
# basis, there's no need for more processes than TestCases.
|
||||||
processes = min(self.parallel, len(subsuites))
|
processes = min(self.parallel, len(subsuites))
|
||||||
|
# Update also "parallel" because it's used to determine the number
|
||||||
|
# of test databases.
|
||||||
|
self.parallel = processes
|
||||||
if processes > 1:
|
if processes > 1:
|
||||||
suite = self.parallel_test_suite(
|
suite = self.parallel_test_suite(
|
||||||
subsuites,
|
subsuites,
|
||||||
|
|
|
@ -457,6 +457,26 @@ class DiscoverRunnerTests(SimpleTestCase):
|
||||||
suite = runner.build_suite(['test_runner_apps.tagged'])
|
suite = runner.build_suite(['test_runner_apps.tagged'])
|
||||||
self.assertEqual(suite.processes, len(suite.subsuites))
|
self.assertEqual(suite.processes, len(suite.subsuites))
|
||||||
|
|
||||||
|
def test_number_of_databases_parallel_test_suite(self):
|
||||||
|
"""
|
||||||
|
Number of databases doesn't exceed the number of TestCases with
|
||||||
|
parallel tests.
|
||||||
|
"""
|
||||||
|
runner = DiscoverRunner(parallel=8, verbosity=0)
|
||||||
|
suite = runner.build_suite(['test_runner_apps.tagged'])
|
||||||
|
self.assertEqual(suite.processes, len(suite.subsuites))
|
||||||
|
self.assertEqual(runner.parallel, suite.processes)
|
||||||
|
|
||||||
|
def test_number_of_databases_no_parallel_test_suite(self):
|
||||||
|
"""
|
||||||
|
Number of databases doesn't exceed the number of TestCases with
|
||||||
|
non-parallel tests.
|
||||||
|
"""
|
||||||
|
runner = DiscoverRunner(parallel=8, verbosity=0)
|
||||||
|
suite = runner.build_suite(['test_runner_apps.simple.tests.DjangoCase1'])
|
||||||
|
self.assertEqual(runner.parallel, 1)
|
||||||
|
self.assertIsInstance(suite, TestSuite)
|
||||||
|
|
||||||
def test_buffer_mode_test_pass(self):
|
def test_buffer_mode_test_pass(self):
|
||||||
runner = DiscoverRunner(buffer=True, verbosity=0)
|
runner = DiscoverRunner(buffer=True, verbosity=0)
|
||||||
with captured_stdout() as stdout, captured_stderr() as stderr:
|
with captured_stdout() as stdout, captured_stderr() as stderr:
|
||||||
|
|
Loading…
Reference in New Issue