Browse Source

Refs #31235 -- Made assertQuerysetEqual() not call repr() on a queryset when compared to string values.

Per deprecation timeline.
Mariusz Felisiak 3 years ago
parent
commit
e2be307b3a
4 changed files with 5 additions and 55 deletions
  1. 0 19
      django/test/testcases.py
  2. 3 0
      docs/releases/4.1.txt
  3. 0 7
      docs/topics/testing/tools.txt
  4. 2 29
      tests/test_utils/tests.py

+ 0 - 19
django/test/testcases.py

@@ -6,7 +6,6 @@ import posixpath
 import sys
 import threading
 import unittest
-import warnings
 from collections import Counter
 from contextlib import contextmanager
 from copy import copy, deepcopy
@@ -42,7 +41,6 @@ from django.test.utils import (
     CaptureQueriesContext, ContextList, compare_xml, modify_settings,
     override_settings,
 )
-from django.utils.deprecation import RemovedInDjango41Warning
 from django.utils.functional import classproperty
 from django.utils.version import PY310
 from django.views.static import serve
@@ -1059,23 +1057,6 @@ class TransactionTestCase(SimpleTestCase):
 
     def assertQuerysetEqual(self, qs, values, transform=None, ordered=True, msg=None):
         values = list(values)
-        # RemovedInDjango41Warning.
-        if transform is None:
-            if (
-                values and isinstance(values[0], str) and
-                qs and not isinstance(qs[0], str)
-            ):
-                # Transform qs using repr() if the first element of values is a
-                # string and the first element of qs is not (which would be the
-                # case if qs is a flattened values_list).
-                warnings.warn(
-                    "In Django 4.1, repr() will not be called automatically "
-                    "on a queryset when compared to string values. Set an "
-                    "explicit 'transform' to silence this warning.",
-                    category=RemovedInDjango41Warning,
-                    stacklevel=2,
-                )
-                transform = repr
         items = qs
         if transform is not None:
             items = map(transform, items)

+ 3 - 0
docs/releases/4.1.txt

@@ -257,3 +257,6 @@ to remove usage of these features.
   ``django.core.validators.EmailValidator`` are removed.
 
 * The ``default_app_config`` application configuration variable is removed.
+
+* ``TransactionTestCase.assertQuerysetEqual()`` no longer calls ``repr()`` on a
+  queryset when compared to string values.

+ 0 - 7
docs/topics/testing/tools.txt

@@ -1700,13 +1700,6 @@ your test suite.
 
     Output in case of error can be customized with the ``msg`` argument.
 
-    .. deprecated:: 3.2
-
-        If ``transform`` is not provided and ``values`` is a list of strings,
-        it's compared to a list produced by applying ``repr()`` to each member
-        of ``qs``. This behavior is deprecated and will be removed in Django
-        4.1. If you need it, explicitly set ``transform`` to ``repr``.
-
 .. method:: TransactionTestCase.assertNumQueries(num, func, *args, **kwargs)
 
     Asserts that when ``func`` is called with ``*args`` and ``**kwargs`` that

+ 2 - 29
tests/test_utils/tests.py

@@ -17,8 +17,8 @@ from django.forms import EmailField, IntegerField
 from django.http import HttpResponse
 from django.template.loader import render_to_string
 from django.test import (
-    SimpleTestCase, TestCase, TransactionTestCase, ignore_warnings,
-    skipIfDBFeature, skipUnlessDBFeature,
+    SimpleTestCase, TestCase, TransactionTestCase, skipIfDBFeature,
+    skipUnlessDBFeature,
 )
 from django.test.html import HTMLParseError, parse_html
 from django.test.utils import (
@@ -26,7 +26,6 @@ from django.test.utils import (
     override_settings, setup_test_environment,
 )
 from django.urls import NoReverseMatch, path, reverse, reverse_lazy
-from django.utils.deprecation import RemovedInDjango41Warning
 from django.utils.log import DEFAULT_LOGGING
 
 from .models import Car, Person, PossessedCar
@@ -362,32 +361,6 @@ class AssertQuerysetEqualTests(TestCase):
             self.assertIn(name, exception_msg)
 
 
-class AssertQuerysetEqualDeprecationTests(TestCase):
-    @classmethod
-    def setUpTestData(cls):
-        cls.p1 = Person.objects.create(name='p1')
-        cls.p2 = Person.objects.create(name='p2')
-
-    @ignore_warnings(category=RemovedInDjango41Warning)
-    def test_str_values(self):
-        self.assertQuerysetEqual(
-            Person.objects.all().order_by('name'),
-            [repr(self.p1), repr(self.p2)],
-        )
-
-    def test_str_values_warning(self):
-        msg = (
-            "In Django 4.1, repr() will not be called automatically on a "
-            "queryset when compared to string values. Set an explicit "
-            "'transform' to silence this warning."
-        )
-        with self.assertRaisesMessage(RemovedInDjango41Warning, msg):
-            self.assertQuerysetEqual(
-                Person.objects.all().order_by('name'),
-                [repr(self.p1), repr(self.p2)],
-            )
-
-
 @override_settings(ROOT_URLCONF='test_utils.urls')
 class CaptureQueriesContextManagerTests(TestCase):