mirror of
https://github.com/django/django.git
synced 2025-06-05 11:39:13 +00:00
[4.2.x] 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
Backport of fc9c90d9c4611d441d2617a7d74f622b1f520f7c from main
This commit is contained in:
parent
c78a4421de
commit
bf5249fc8e
@ -4,6 +4,7 @@ from django.test import SimpleTestCase
|
|||||||
from django.test.utils import ignore_warnings
|
from django.test.utils import ignore_warnings
|
||||||
from django.utils.deprecation import RemovedInDjango50Warning
|
from django.utils.deprecation import RemovedInDjango50Warning
|
||||||
from django.utils.functional import cached_property, classproperty, lazy
|
from django.utils.functional import cached_property, classproperty, lazy
|
||||||
|
from django.utils.version import PY312
|
||||||
|
|
||||||
|
|
||||||
class FunctionalTests(SimpleTestCase):
|
class FunctionalTests(SimpleTestCase):
|
||||||
@ -156,7 +157,18 @@ class FunctionalTests(SimpleTestCase):
|
|||||||
|
|
||||||
def test_cached_property_reuse_different_names(self):
|
def test_cached_property_reuse_different_names(self):
|
||||||
"""Disallow this case because the decorated function wouldn't be cached."""
|
"""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:
|
class ReusedCachedProperty:
|
||||||
@cached_property
|
@cached_property
|
||||||
@ -165,15 +177,8 @@ class FunctionalTests(SimpleTestCase):
|
|||||||
|
|
||||||
b = a
|
b = a
|
||||||
|
|
||||||
self.assertEqual(
|
if not PY312:
|
||||||
str(ctx.exception.__context__),
|
self.assertEqual(str(ctx.exception.__context__), str(TypeError(type_msg)))
|
||||||
str(
|
|
||||||
TypeError(
|
|
||||||
"Cannot assign the same cached_property to two different "
|
|
||||||
"names ('a' and 'b')."
|
|
||||||
)
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_cached_property_reuse_same_name(self):
|
def test_cached_property_reuse_same_name(self):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user