mirror of
https://github.com/python/cpython.git
synced 2025-09-27 18:59:43 +00:00
[3.12] gh-106368: Increase coverage for Argument Clinic output directive (GH-106979) (#106994)
(cherry picked from commit ee5c01b473
)
Co-authored-by: Erlend E. Aasland <erlend@python.org>
This commit is contained in:
parent
67748f18c9
commit
76fd98a675
1 changed files with 53 additions and 0 deletions
|
@ -249,6 +249,59 @@ class ClinicWholeFileTest(_ParserBase):
|
||||||
out = self.expect_failure(raw)
|
out = self.expect_failure(raw)
|
||||||
self.assertEqual(out, msg)
|
self.assertEqual(out, msg)
|
||||||
|
|
||||||
|
def test_directive_output_unknown_preset(self):
|
||||||
|
out = self.expect_failure("""
|
||||||
|
/*[clinic input]
|
||||||
|
output preset nosuchpreset
|
||||||
|
[clinic start generated code]*/
|
||||||
|
""")
|
||||||
|
msg = "Unknown preset 'nosuchpreset'"
|
||||||
|
self.assertIn(msg, out)
|
||||||
|
|
||||||
|
def test_directive_output_cant_pop(self):
|
||||||
|
out = self.expect_failure("""
|
||||||
|
/*[clinic input]
|
||||||
|
output pop
|
||||||
|
[clinic start generated code]*/
|
||||||
|
""")
|
||||||
|
msg = "Can't 'output pop', stack is empty"
|
||||||
|
self.assertIn(msg, out)
|
||||||
|
|
||||||
|
def test_directive_output_print(self):
|
||||||
|
raw = dedent("""
|
||||||
|
/*[clinic input]
|
||||||
|
output print 'I told you once.'
|
||||||
|
[clinic start generated code]*/
|
||||||
|
""")
|
||||||
|
out = self.clinic.parse(raw)
|
||||||
|
# The generated output will differ for every run, but we can check that
|
||||||
|
# it starts with the clinic block, we check that it contains all the
|
||||||
|
# expected fields, and we check that it contains the checksum line.
|
||||||
|
self.assertTrue(out.startswith(dedent("""
|
||||||
|
/*[clinic input]
|
||||||
|
output print 'I told you once.'
|
||||||
|
[clinic start generated code]*/
|
||||||
|
""")))
|
||||||
|
fields = {
|
||||||
|
"cpp_endif",
|
||||||
|
"cpp_if",
|
||||||
|
"docstring_definition",
|
||||||
|
"docstring_prototype",
|
||||||
|
"impl_definition",
|
||||||
|
"impl_prototype",
|
||||||
|
"methoddef_define",
|
||||||
|
"methoddef_ifndef",
|
||||||
|
"parser_definition",
|
||||||
|
"parser_prototype",
|
||||||
|
}
|
||||||
|
for field in fields:
|
||||||
|
with self.subTest(field=field):
|
||||||
|
self.assertIn(field, out)
|
||||||
|
last_line = out.rstrip().split("\n")[-1]
|
||||||
|
self.assertTrue(
|
||||||
|
last_line.startswith("/*[clinic end generated code: output=")
|
||||||
|
)
|
||||||
|
|
||||||
def test_unknown_destination_command(self):
|
def test_unknown_destination_command(self):
|
||||||
out = self.expect_failure("""
|
out = self.expect_failure("""
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue