[Python-checkins] gh-106368: Increase coverage for Argument Clinic output directive (#106979)
erlend-aasland
webhook-mailer at python.org
Sat Jul 22 05:32:14 EDT 2023
https://github.com/python/cpython/commit/ee5c01b473eeadb007b9f330db3143e34e46038b
commit: ee5c01b473eeadb007b9f330db3143e34e46038b
branch: main
author: Erlend E. Aasland <erlend at python.org>
committer: erlend-aasland <erlend.aasland at protonmail.com>
date: 2023-07-22T09:32:10Z
summary:
gh-106368: Increase coverage for Argument Clinic output directive (#106979)
files:
M Lib/test/test_clinic.py
diff --git a/Lib/test/test_clinic.py b/Lib/test/test_clinic.py
index e40579b0041cf..c24b8cd3899f2 100644
--- a/Lib/test/test_clinic.py
+++ b/Lib/test/test_clinic.py
@@ -249,6 +249,59 @@ def test_cpp_monitor_fail_no_matching_if(self):
out = self.expect_failure(raw)
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):
out = self.expect_failure("""
/*[clinic input]
More information about the Python-checkins
mailing list