Skip to content

Commit

Permalink
pythongh-106368: Increase Argument Clinic test coverage (pythonGH-106369
Browse files Browse the repository at this point in the history
)

Add tests for 'self' and 'defining_class' converter requirements.
(cherry picked from commit 7f4c812)

Co-authored-by: Erlend E. Aasland <[email protected]>
  • Loading branch information
erlend-aasland authored and miss-islington committed Jul 3, 2023
1 parent 887a7e6 commit e0f4ef0
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions Lib/test/test_clinic.py
Original file line number Diff line number Diff line change
Expand Up @@ -829,6 +829,63 @@ def test_kwarg_splats_disallowed_in_function_call_annotations(self):
out = self.parse_function_should_fail(fn)
self.assertEqual(out, expected_error_msg)

def test_self_param_placement(self):
expected_error_msg = (
"Error on line 0:\n"
"A 'self' parameter, if specified, must be the very first thing "
"in the parameter block.\n"
)
block = """
module foo
foo.func
a: int
self: self(type="PyObject *")
"""
out = self.parse_function_should_fail(block)
self.assertEqual(out, expected_error_msg)

def test_self_param_cannot_be_optional(self):
expected_error_msg = (
"Error on line 0:\n"
"A 'self' parameter cannot be marked optional.\n"
)
block = """
module foo
foo.func
self: self(type="PyObject *") = None
"""
out = self.parse_function_should_fail(block)
self.assertEqual(out, expected_error_msg)

def test_defining_class_param_placement(self):
expected_error_msg = (
"Error on line 0:\n"
"A 'defining_class' parameter, if specified, must either be the "
"first thing in the parameter block, or come just after 'self'.\n"
)
block = """
module foo
foo.func
self: self(type="PyObject *")
a: int
cls: defining_class
"""
out = self.parse_function_should_fail(block)
self.assertEqual(out, expected_error_msg)

def test_defining_class_param_cannot_be_optional(self):
expected_error_msg = (
"Error on line 0:\n"
"A 'defining_class' parameter cannot be marked optional.\n"
)
block = """
module foo
foo.func
cls: defining_class(type="PyObject *") = None
"""
out = self.parse_function_should_fail(block)
self.assertEqual(out, expected_error_msg)

def test_unused_param(self):
block = self.parse("""
module foo
Expand Down

0 comments on commit e0f4ef0

Please sign in to comment.