mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	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:
		| @@ -795,6 +795,9 @@ class DiscoverRunner: | ||||
|             # Since tests are distributed across processes on a per-TestCase | ||||
|             # basis, there's no need for more processes than TestCases. | ||||
|             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: | ||||
|                 suite = self.parallel_test_suite( | ||||
|                     subsuites, | ||||
|   | ||||
| @@ -457,6 +457,26 @@ class DiscoverRunnerTests(SimpleTestCase): | ||||
|         suite = runner.build_suite(['test_runner_apps.tagged']) | ||||
|         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): | ||||
|         runner = DiscoverRunner(buffer=True, verbosity=0) | ||||
|         with captured_stdout() as stdout, captured_stderr() as stderr: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user