diff options
| author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-09-16 08:09:52 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-09-20 21:23:01 +0200 |
| commit | 2e10abeb7f375d56dca21b1baed11f98e74ab7f5 (patch) | |
| tree | 0aaf6d27f18a1724a4a95dc5093ea36ea9981b1c | |
| parent | 97237ad3feed80407ed1884ea84cf00fd9fea367 (diff) | |
Refs #31395 -- Removed support for assigning objects which don't support deepcopy() in setUpTestData().
Per deprecation timeline.
| -rw-r--r-- | django/test/testcases.py | 18 | ||||
| -rw-r--r-- | docs/releases/4.1.txt | 4 | ||||
| -rw-r--r-- | tests/test_utils/test_testcase.py | 24 |
3 files changed, 5 insertions, 41 deletions
diff --git a/django/test/testcases.py b/django/test/testcases.py index 41d01b89b4..7d12594177 100644 --- a/django/test/testcases.py +++ b/django/test/testcases.py @@ -1139,23 +1139,7 @@ class TestData: if instance is None: return self.data memo = self.get_memo(instance) - try: - data = deepcopy(self.data, memo) - except TypeError: - # RemovedInDjango41Warning. - msg = ( - "Assigning objects which don't support copy.deepcopy() during " - "setUpTestData() is deprecated. Either assign the %s " - "attribute during setUpClass() or setUp(), or add support for " - "deepcopy() to %s.%s.%s." - ) % ( - self.name, - owner.__module__, - owner.__qualname__, - self.name, - ) - warnings.warn(msg, category=RemovedInDjango41Warning, stacklevel=2) - data = self.data + data = deepcopy(self.data, memo) setattr(instance, self.name, data) return data diff --git a/docs/releases/4.1.txt b/docs/releases/4.1.txt index 8a65b94581..bf3f3a848f 100644 --- a/docs/releases/4.1.txt +++ b/docs/releases/4.1.txt @@ -246,4 +246,6 @@ in Django 4.1. See :ref:`deprecated-features-3.2` for details on these changes, including how to remove usage of these features. -* ... +* Support for assigning objects which don't support creating deep copies with + ``copy.deepcopy()`` to class attributes in ``TestCase.setUpTestData()`` is + removed. diff --git a/tests/test_utils/test_testcase.py b/tests/test_utils/test_testcase.py index 9b11168b13..1261006092 100644 --- a/tests/test_utils/test_testcase.py +++ b/tests/test_utils/test_testcase.py @@ -1,9 +1,8 @@ from functools import wraps from django.db import IntegrityError, connections, transaction -from django.test import TestCase, ignore_warnings, skipUnlessDBFeature +from django.test import TestCase, skipUnlessDBFeature from django.test.testcases import TestData -from django.utils.deprecation import RemovedInDjango41Warning from .models import Car, Person, PossessedCar @@ -54,11 +53,6 @@ class TestTestCase(TestCase): self.reset_sequences = old_reset_sequences -class NonDeepCopyAble: - def __deepcopy__(self, memo): - raise TypeError - - def assert_no_queries(test): @wraps(test) def inner(self): @@ -79,7 +73,6 @@ class TestDataTests(TestCase): car=cls.car, belongs_to=cls.jim_douglas, ) - cls.non_deepcopy_able = NonDeepCopyAble() @assert_no_queries def test_class_attribute_equality(self): @@ -104,21 +97,6 @@ class TestDataTests(TestCase): self.assertIs(self.herbie.car, self.car) self.assertIs(self.herbie.belongs_to, self.jim_douglas) - @ignore_warnings(category=RemovedInDjango41Warning) - def test_undeepcopyable(self): - self.assertIs(self.non_deepcopy_able, self.__class__.non_deepcopy_able) - - def test_undeepcopyable_warning(self): - msg = ( - "Assigning objects which don't support copy.deepcopy() during " - "setUpTestData() is deprecated. Either assign the " - "non_deepcopy_able attribute during setUpClass() or setUp(), or " - "add support for deepcopy() to " - "test_utils.test_testcase.TestDataTests.non_deepcopy_able." - ) - with self.assertRaisesMessage(RemovedInDjango41Warning, msg): - self.non_deepcopy_able - def test_repr(self): self.assertEqual( repr(TestData('attr', 'value')), |
