1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

Refs #34118 -- Fixed FunctionalTests.test_cached_property_reuse_different_names() on Python 3.12+.

Python 3.12+ no longer wraps exceptions in __set_name__, see
55c99d97e1
This commit is contained in:
Mariusz Felisiak 2023-05-23 12:56:33 +02:00 committed by GitHub
parent 23abec9192
commit fc9c90d9c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,6 +2,7 @@ from unittest import mock
from django.test import SimpleTestCase
from django.utils.functional import cached_property, classproperty, lazy
from django.utils.version import PY312
class FunctionalTests(SimpleTestCase):
@ -130,7 +131,18 @@ class FunctionalTests(SimpleTestCase):
def test_cached_property_reuse_different_names(self):
"""Disallow this case because the decorated function wouldn't be cached."""
with self.assertRaises(RuntimeError) as ctx:
type_msg = (
"Cannot assign the same cached_property to two different names ('a' and "
"'b')."
)
if PY312:
error_type = TypeError
msg = type_msg
else:
error_type = RuntimeError
msg = "Error calling __set_name__"
with self.assertRaisesMessage(error_type, msg) as ctx:
class ReusedCachedProperty:
@cached_property
@ -139,15 +151,8 @@ class FunctionalTests(SimpleTestCase):
b = a
self.assertEqual(
str(ctx.exception.__context__),
str(
TypeError(
"Cannot assign the same cached_property to two different "
"names ('a' and 'b')."
)
),
)
if not PY312:
self.assertEqual(str(ctx.exception.__context__), str(TypeError(type_msg)))
def test_cached_property_reuse_same_name(self):
"""