mirror of https://github.com/python/cpython
Add additional keyword-only tests. (GH-25633)
This commit is contained in:
parent
bd25bcd37a
commit
94549ee728
|
@ -3502,7 +3502,7 @@ class TestMatchArgs(unittest.TestCase):
|
|||
self.assertEqual(C.__match_args__, ('z',))
|
||||
|
||||
|
||||
class TestKwArgs(unittest.TestCase):
|
||||
class TestKeywordArgs(unittest.TestCase):
|
||||
def test_no_classvar_kwarg(self):
|
||||
msg = 'field a is a ClassVar but specifies kw_only'
|
||||
with self.assertRaisesRegex(TypeError, msg):
|
||||
|
@ -3659,6 +3659,34 @@ class TestKwArgs(unittest.TestCase):
|
|||
b = B(1, c=2, b=3, d=4)
|
||||
self.assertEqual(asdict(b), {'a': 3, 'c': 4})
|
||||
|
||||
def test_defaults(self):
|
||||
# For kwargs, make sure we can have defaults after non-defaults.
|
||||
@dataclass
|
||||
class A:
|
||||
a: int = 0
|
||||
_: KW_ONLY
|
||||
b: int
|
||||
c: int = 1
|
||||
d: int
|
||||
|
||||
a = A(d=4, b=3)
|
||||
self.assertEqual(a.a, 0)
|
||||
self.assertEqual(a.b, 3)
|
||||
self.assertEqual(a.c, 1)
|
||||
self.assertEqual(a.d, 4)
|
||||
|
||||
# Make sure we still check for non-kwarg non-defaults not following
|
||||
# defaults.
|
||||
err_regex = "non-default argument 'z' follows default argument"
|
||||
with self.assertRaisesRegex(TypeError, err_regex):
|
||||
@dataclass
|
||||
class A:
|
||||
a: int = 0
|
||||
z: int
|
||||
_: KW_ONLY
|
||||
b: int
|
||||
c: int = 1
|
||||
d: int
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
Loading…
Reference in New Issue