summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_dataclasses.py
diff options
context:
space:
mode:
authorCarl Meyer <carl@oddbird.net>2023-01-06 02:08:33 (GMT)
committerGitHub <noreply@github.com>2023-01-06 02:08:33 (GMT)
commitf4888315769a2267d9a1351cf182ebef0ae9c4b5 (patch)
treea4f6cf5d5edc8df5d90ca7baaade0270f43ad5c9 /Lib/test/test_dataclasses.py
parentd6b8413e94d68649bdd3cac5d441f1cf4609b540 (diff)
downloadcpython-f4888315769a2267d9a1351cf182ebef0ae9c4b5.zip
cpython-f4888315769a2267d9a1351cf182ebef0ae9c4b5.tar.gz
cpython-f4888315769a2267d9a1351cf182ebef0ae9c4b5.tar.bz2
[3.11] gh-90104: avoid RecursionError on recursive dataclass field repr (gh-100756) (GH-100784)
Avoid RecursionError on recursive dataclass field repr (cherry picked from commit 0a7936a38f0bab1619ee9fe257880a51c9d839d5) Automerge-Triggered-By: GH:ericvsmith
Diffstat (limited to 'Lib/test/test_dataclasses.py')
-rw-r--r--Lib/test/test_dataclasses.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_dataclasses.py b/Lib/test/test_dataclasses.py
index 0d809bd..9af4377 100644
--- a/Lib/test/test_dataclasses.py
+++ b/Lib/test/test_dataclasses.py
@@ -68,6 +68,24 @@ class TestCase(unittest.TestCase):
self.assertEqual(repr_output, expected_output)
+ def test_field_recursive_repr(self):
+ rec_field = field()
+ rec_field.type = rec_field
+ rec_field.name = "id"
+ repr_output = repr(rec_field)
+
+ self.assertIn(",type=...,", repr_output)
+
+ def test_recursive_annotation(self):
+ class C:
+ pass
+
+ @dataclass
+ class D:
+ C: C = field()
+
+ self.assertIn(",type=...,", repr(D.__dataclass_fields__["C"]))
+
def test_named_init_params(self):
@dataclass
class C: