summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2019-09-07 11:57:46 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-09-10 12:01:00 +0200
commitb61ea56789a5825bd2961a335cb82f65e09f1614 (patch)
tree96540b71c4380dd930b63cd08d19c59b6b50fdfa
parentf1894bae3071da4ee577fc40ae61491f3e03d82c (diff)
Refs #28478 -- Removed support for TestCase's allow_database_queries and multi_db per deprecation timeline.
-rw-r--r--django/test/testcases.py55
-rw-r--r--docs/releases/1.9.txt5
-rw-r--r--docs/releases/2.2.txt4
-rw-r--r--docs/releases/3.1.txt3
-rw-r--r--docs/topics/testing/tools.txt24
-rw-r--r--tests/test_utils/test_deprecated_features.py64
6 files changed, 9 insertions, 146 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py
index dea7fedbcc..1a7414b91d 100644
--- a/django/test/testcases.py
+++ b/django/test/testcases.py
@@ -4,7 +4,6 @@ import posixpath
import sys
import threading
import unittest
-import warnings
from collections import Counter
from contextlib import contextmanager
from copy import copy
@@ -38,7 +37,6 @@ from django.test.utils import (
override_settings,
)
from django.utils.decorators import classproperty
-from django.utils.deprecation import RemovedInDjango31Warning
from django.views.static import serve
__all__ = ('TestCase', 'TransactionTestCase',
@@ -144,25 +142,6 @@ class _DatabaseFailure:
raise AssertionError(self.message)
-class _SimpleTestCaseDatabasesDescriptor:
- """Descriptor for SimpleTestCase.allow_database_queries deprecation."""
- def __get__(self, instance, cls=None):
- try:
- allow_database_queries = cls.allow_database_queries
- except AttributeError:
- pass
- else:
- msg = (
- '`SimpleTestCase.allow_database_queries` is deprecated. '
- 'Restrict the databases available during the execution of '
- '%s.%s with the `databases` attribute instead.'
- ) % (cls.__module__, cls.__qualname__)
- warnings.warn(msg, RemovedInDjango31Warning)
- if allow_database_queries:
- return {DEFAULT_DB_ALIAS}
- return set()
-
-
class SimpleTestCase(unittest.TestCase):
# The class we'll use for the test client self.client.
@@ -171,7 +150,7 @@ class SimpleTestCase(unittest.TestCase):
_overridden_settings = None
_modified_settings = None
- databases = _SimpleTestCaseDatabasesDescriptor()
+ databases = set()
_disallowed_database_msg = (
'Database %(operation)s to %(alias)r are not allowed in SimpleTestCase '
'subclasses. Either subclass TestCase or TransactionTestCase to ensure '
@@ -870,26 +849,6 @@ class SimpleTestCase(unittest.TestCase):
self.fail(self._formatMessage(msg, standardMsg))
-class _TransactionTestCaseDatabasesDescriptor:
- """Descriptor for TransactionTestCase.multi_db deprecation."""
- msg = (
- '`TransactionTestCase.multi_db` is deprecated. Databases available '
- 'during this test can be defined using %s.%s.databases.'
- )
-
- def __get__(self, instance, cls=None):
- try:
- multi_db = cls.multi_db
- except AttributeError:
- pass
- else:
- msg = self.msg % (cls.__module__, cls.__qualname__)
- warnings.warn(msg, RemovedInDjango31Warning)
- if multi_db:
- return set(connections)
- return {DEFAULT_DB_ALIAS}
-
-
class TransactionTestCase(SimpleTestCase):
# Subclasses can ask for resetting of auto increment sequence before each
@@ -902,7 +861,7 @@ class TransactionTestCase(SimpleTestCase):
# Subclasses can define fixtures which will be automatically installed.
fixtures = None
- databases = _TransactionTestCaseDatabasesDescriptor()
+ databases = {DEFAULT_DB_ALIAS}
_disallowed_database_msg = (
'Database %(operation)s to %(alias)r are not allowed in this test. '
'Add %(alias)r to %(test)s.databases to ensure proper test isolation '
@@ -1075,14 +1034,6 @@ def connections_support_transactions(aliases=None):
return all(conn.features.supports_transactions for conn in conns)
-class _TestCaseDatabasesDescriptor(_TransactionTestCaseDatabasesDescriptor):
- """Descriptor for TestCase.multi_db deprecation."""
- msg = (
- '`TestCase.multi_db` is deprecated. Databases available during this '
- 'test can be defined using %s.%s.databases.'
- )
-
-
class TestCase(TransactionTestCase):
"""
Similar to TransactionTestCase, but use `transaction.atomic()` to achieve
@@ -1096,8 +1047,6 @@ class TestCase(TransactionTestCase):
On database backends with no transaction support, TestCase behaves as
TransactionTestCase.
"""
- databases = _TestCaseDatabasesDescriptor()
-
@classmethod
def _enter_atomics(cls):
"""Open atomic blocks for multiple databases."""
diff --git a/docs/releases/1.9.txt b/docs/releases/1.9.txt
index ce39f4fa3e..2fdf361af1 100644
--- a/docs/releases/1.9.txt
+++ b/docs/releases/1.9.txt
@@ -1091,9 +1091,8 @@ Miscellaneous
* In order to enforce test isolation, database queries are not allowed
by default in :class:`~django.test.SimpleTestCase` tests anymore. You
- can disable this behavior by setting the
- :attr:`~django.test.SimpleTestCase.allow_database_queries` class attribute
- to ``True`` on your test class.
+ can disable this behavior by setting the ``allow_database_queries`` class
+ attribute to ``True`` on your test class.
* ``ResolverMatch.app_name`` was changed to contain the full namespace path in
the case of nested namespaces. For consistency with
diff --git a/docs/releases/2.2.txt b/docs/releases/2.2.txt
index 2639aa886a..3fb1f134fb 100644
--- a/docs/releases/2.2.txt
+++ b/docs/releases/2.2.txt
@@ -508,8 +508,8 @@ Miscellaneous
first positional argument, if it accepts it. Support for overrides that don't
accept it will be removed in Django 3.1.
-* The :attr:`.SimpleTestCase.allow_database_queries`,
- :attr:`.TransactionTestCase.multi_db`, and :attr:`.TestCase.multi_db`
+* The ``SimpleTestCase.allow_database_queries``,
+ ``TransactionTestCase.multi_db``, and ``TestCase.multi_db``
attributes are deprecated in favor of :attr:`.SimpleTestCase.databases`,
:attr:`.TransactionTestCase.databases`, and :attr:`.TestCase.databases`.
These new attributes allow databases dependencies to be declared in order to
diff --git a/docs/releases/3.1.txt b/docs/releases/3.1.txt
index d90a784fd9..3f7e7f261b 100644
--- a/docs/releases/3.1.txt
+++ b/docs/releases/3.1.txt
@@ -240,3 +240,6 @@ to remove usage of these features.
* The ``FILE_CHARSET`` setting is removed.
* ``django.contrib.staticfiles.storage.CachedStaticFilesStorage`` is removed.
+
+* Support for ``SimpleTestCase.allow_database_queries`` and
+ ``TransactionTestCase.multi_db`` is removed.
diff --git a/docs/topics/testing/tools.txt b/docs/topics/testing/tools.txt
index bc88e2defa..41652cbee1 100644
--- a/docs/topics/testing/tools.txt
+++ b/docs/topics/testing/tools.txt
@@ -747,14 +747,6 @@ If your tests make any database queries, use subclasses
setting the ``databases`` class attribute to ``'__all__'`` on your test
class.
-.. attribute:: SimpleTestCase.allow_database_queries
-
- .. deprecated:: 2.2
-
- This attribute is deprecated in favor of :attr:`databases`. The previous
- behavior of ``allow_database_queries = True`` can be achieved by setting
- ``databases = '__all__'``.
-
.. warning::
``SimpleTestCase`` and its subclasses (e.g. ``TestCase``, ...) rely on
@@ -1180,14 +1172,6 @@ only loaded into the ``default`` database.
Queries against databases not in ``databases`` will give assertion errors to
prevent state leaking between tests.
-.. attribute:: TransactionTestCase.multi_db
-
-.. deprecated:: 2.2
-
-This attribute is deprecated in favor of :attr:`~TransactionTestCase.databases`.
-The previous behavior of ``multi_db = True`` can be achieved by setting
-``databases = '__all__'``.
-
.. attribute:: TestCase.databases
By default, only the ``default`` database will be wrapped in a transaction
@@ -1210,14 +1194,6 @@ This test will only allow queries against the ``other`` database. Just like for
``'__all__'`` constant can be used to specify that the test should allow
queries to all databases.
-.. attribute:: TestCase.multi_db
-
-.. deprecated:: 2.2
-
-This attribute is deprecated in favor of :attr:`~TestCase.databases`. The
-previous behavior of ``multi_db = True`` can be achieved by setting
-``databases = '__all__'``.
-
.. _overriding-settings:
Overriding settings
diff --git a/tests/test_utils/test_deprecated_features.py b/tests/test_utils/test_deprecated_features.py
deleted file mode 100644
index fbed5e14c5..0000000000
--- a/tests/test_utils/test_deprecated_features.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from django.db import connections
-from django.db.utils import DEFAULT_DB_ALIAS
-from django.test import SimpleTestCase, TestCase, TransactionTestCase
-from django.utils.deprecation import RemovedInDjango31Warning
-
-
-class AllowDatabaseQueriesDeprecationTests(SimpleTestCase):
- def test_enabled(self):
- class AllowedDatabaseQueries(SimpleTestCase):
- allow_database_queries = True
- message = (
- '`SimpleTestCase.allow_database_queries` is deprecated. Restrict '
- 'the databases available during the execution of '
- 'test_utils.test_deprecated_features.AllowDatabaseQueriesDeprecationTests.'
- 'test_enabled.<locals>.AllowedDatabaseQueries with the '
- '`databases` attribute instead.'
- )
- with self.assertWarnsMessage(RemovedInDjango31Warning, message):
- self.assertEqual(AllowedDatabaseQueries.databases, {'default'})
-
- def test_explicitly_disabled(self):
- class AllowedDatabaseQueries(SimpleTestCase):
- allow_database_queries = False
- message = (
- '`SimpleTestCase.allow_database_queries` is deprecated. Restrict '
- 'the databases available during the execution of '
- 'test_utils.test_deprecated_features.AllowDatabaseQueriesDeprecationTests.'
- 'test_explicitly_disabled.<locals>.AllowedDatabaseQueries with '
- 'the `databases` attribute instead.'
- )
- with self.assertWarnsMessage(RemovedInDjango31Warning, message):
- self.assertEqual(AllowedDatabaseQueries.databases, set())
-
-
-class MultiDbDeprecationTests(SimpleTestCase):
- def test_transaction_test_case(self):
- class MultiDbTestCase(TransactionTestCase):
- multi_db = True
- message = (
- '`TransactionTestCase.multi_db` is deprecated. Databases '
- 'available during this test can be defined using '
- 'test_utils.test_deprecated_features.MultiDbDeprecationTests.'
- 'test_transaction_test_case.<locals>.MultiDbTestCase.databases.'
- )
- with self.assertWarnsMessage(RemovedInDjango31Warning, message):
- self.assertEqual(MultiDbTestCase.databases, set(connections))
- MultiDbTestCase.multi_db = False
- with self.assertWarnsMessage(RemovedInDjango31Warning, message):
- self.assertEqual(MultiDbTestCase.databases, {DEFAULT_DB_ALIAS})
-
- def test_test_case(self):
- class MultiDbTestCase(TestCase):
- multi_db = True
- message = (
- '`TestCase.multi_db` is deprecated. Databases available during '
- 'this test can be defined using '
- 'test_utils.test_deprecated_features.MultiDbDeprecationTests.'
- 'test_test_case.<locals>.MultiDbTestCase.databases.'
- )
- with self.assertWarnsMessage(RemovedInDjango31Warning, message):
- self.assertEqual(MultiDbTestCase.databases, set(connections))
- MultiDbTestCase.multi_db = False
- with self.assertWarnsMessage(RemovedInDjango31Warning, message):
- self.assertEqual(MultiDbTestCase.databases, {DEFAULT_DB_ALIAS})