diff options
| author | Simon Charette <charette.s@gmail.com> | 2021-02-14 22:42:47 -0500 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-02-24 20:31:11 +0100 |
| commit | 3089018e951dcca568574c0e0ebf9d8aab112389 (patch) | |
| tree | 932c0c26621d115185561feded6987a57771a3ea /tests/test_runner | |
| parent | af685b5f00a2a38ec596ff905d5f70455185b6d7 (diff) | |
Fixed #32446 -- Deprecated SERIALIZE test database setting.
Whether or not the state of a test database should be serialized can be
inferred from the set of databases allowed to be access from discovered
TestCase/TransactionTestCase enabling the serialized_rollback feature
which makes this setting unnecessary.
This should make a significant test suite bootstraping time difference
on large projects that didn't explicitly disable test database
serialization.
Diffstat (limited to 'tests/test_runner')
| -rw-r--r-- | tests/test_runner/test_discover_runner.py | 20 | ||||
| -rw-r--r-- | tests/test_runner/tests.py | 15 |
2 files changed, 25 insertions, 10 deletions
diff --git a/tests/test_runner/test_discover_runner.py b/tests/test_runner/test_discover_runner.py index ee95f9da72..1b5177ccf7 100644 --- a/tests/test_runner/test_discover_runner.py +++ b/tests/test_runner/test_discover_runner.py @@ -354,7 +354,7 @@ class DiscoverRunnerGetDatabasesTests(SimpleTestCase): def assertSkippedDatabases(self, test_labels, expected_databases): databases, output = self.get_databases(test_labels) self.assertEqual(databases, expected_databases) - skipped_databases = set(connections) - expected_databases + skipped_databases = set(connections) - set(expected_databases) if skipped_databases: self.assertIn(self.skip_msg + ', '.join(sorted(skipped_databases)), output) else: @@ -362,31 +362,37 @@ class DiscoverRunnerGetDatabasesTests(SimpleTestCase): def test_mixed(self): databases, output = self.get_databases(['test_runner_apps.databases.tests']) - self.assertEqual(databases, set(connections)) + self.assertEqual(databases, {'default': True, 'other': False}) self.assertNotIn(self.skip_msg, output) def test_all(self): databases, output = self.get_databases(['test_runner_apps.databases.tests.AllDatabasesTests']) - self.assertEqual(databases, set(connections)) + self.assertEqual(databases, {alias: False for alias in connections}) self.assertNotIn(self.skip_msg, output) def test_default_and_other(self): self.assertSkippedDatabases([ 'test_runner_apps.databases.tests.DefaultDatabaseTests', 'test_runner_apps.databases.tests.OtherDatabaseTests', - ], {'default', 'other'}) + ], {'default': False, 'other': False}) def test_default_only(self): self.assertSkippedDatabases([ 'test_runner_apps.databases.tests.DefaultDatabaseTests', - ], {'default'}) + ], {'default': False}) def test_other_only(self): self.assertSkippedDatabases([ 'test_runner_apps.databases.tests.OtherDatabaseTests' - ], {'other'}) + ], {'other': False}) def test_no_databases_required(self): self.assertSkippedDatabases([ 'test_runner_apps.databases.tests.NoDatabaseTests' - ], set()) + ], {}) + + def test_serialize(self): + databases, _ = self.get_databases([ + 'test_runner_apps.databases.tests.DefaultDatabaseSerializedTests' + ]) + self.assertEqual(databases, {'default': True}) diff --git a/tests/test_runner/tests.py b/tests/test_runner/tests.py index 87d432a2ab..5dc3126581 100644 --- a/tests/test_runner/tests.py +++ b/tests/test_runner/tests.py @@ -11,12 +11,15 @@ from django.conf import settings from django.core.exceptions import ImproperlyConfigured from django.core.management import call_command from django.core.management.base import SystemCheckError -from django.test import TransactionTestCase, skipUnlessDBFeature +from django.test import ( + SimpleTestCase, TransactionTestCase, skipUnlessDBFeature, +) from django.test.runner import DiscoverRunner from django.test.testcases import connections_support_transactions from django.test.utils import ( captured_stderr, dependency_ordered, get_unique_databases_and_mirrors, ) +from django.utils.deprecation import RemovedInDjango50Warning from .models import B, Person, Through @@ -315,7 +318,7 @@ class AliasedDefaultTestSetupTest(unittest.TestCase): runner_instance.teardown_databases(old_config) -class SetupDatabasesTests(unittest.TestCase): +class SetupDatabasesTests(SimpleTestCase): def setUp(self): self.runner_instance = DiscoverRunner(verbosity=0) @@ -398,9 +401,15 @@ class SetupDatabasesTests(unittest.TestCase): 'TEST': {'SERIALIZE': False}, }, }) + msg = ( + 'The SERIALIZE test database setting is deprecated as it can be ' + 'inferred from the TestCase/TransactionTestCase.databases that ' + 'enable the serialized_rollback feature.' + ) with mock.patch('django.db.backends.dummy.base.DatabaseWrapper.creation_class') as mocked_db_creation: with mock.patch('django.test.utils.connections', new=tested_connections): - self.runner_instance.setup_databases() + with self.assertWarnsMessage(RemovedInDjango50Warning, msg): + self.runner_instance.setup_databases() mocked_db_creation.return_value.create_test_db.assert_called_once_with( verbosity=0, autoclobber=False, serialize=False, keepdb=False ) |
