summaryrefslogtreecommitdiff
path: root/tests/test_runner
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2021-02-14 22:42:47 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-02-24 20:31:11 +0100
commit3089018e951dcca568574c0e0ebf9d8aab112389 (patch)
tree932c0c26621d115185561feded6987a57771a3ea /tests/test_runner
parentaf685b5f00a2a38ec596ff905d5f70455185b6d7 (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.py20
-rw-r--r--tests/test_runner/tests.py15
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
)