Skip to content

Commit 94549ee

Browse files
authored
Add additional keyword-only tests. (GH-25633)
1 parent bd25bcd commit 94549ee

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

Lib/test/test_dataclasses.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3502,7 +3502,7 @@ def test_make_dataclasses(self):
35023502
self.assertEqual(C.__match_args__, ('z',))
35033503

35043504

3505-
class TestKwArgs(unittest.TestCase):
3505+
class TestKeywordArgs(unittest.TestCase):
35063506
def test_no_classvar_kwarg(self):
35073507
msg = 'field a is a ClassVar but specifies kw_only'
35083508
with self.assertRaisesRegex(TypeError, msg):
@@ -3659,6 +3659,34 @@ def __post_init__(self, b, d):
36593659
b = B(1, c=2, b=3, d=4)
36603660
self.assertEqual(asdict(b), {'a': 3, 'c': 4})
36613661

3662+
def test_defaults(self):
3663+
# For kwargs, make sure we can have defaults after non-defaults.
3664+
@dataclass
3665+
class A:
3666+
a: int = 0
3667+
_: KW_ONLY
3668+
b: int
3669+
c: int = 1
3670+
d: int
3671+
3672+
a = A(d=4, b=3)
3673+
self.assertEqual(a.a, 0)
3674+
self.assertEqual(a.b, 3)
3675+
self.assertEqual(a.c, 1)
3676+
self.assertEqual(a.d, 4)
3677+
3678+
# Make sure we still check for non-kwarg non-defaults not following
3679+
# defaults.
3680+
err_regex = "non-default argument 'z' follows default argument"
3681+
with self.assertRaisesRegex(TypeError, err_regex):
3682+
@dataclass
3683+
class A:
3684+
a: int = 0
3685+
z: int
3686+
_: KW_ONLY
3687+
b: int
3688+
c: int = 1
3689+
d: int
36623690

36633691
if __name__ == '__main__':
36643692
unittest.main()

0 commit comments

Comments
 (0)