Issue #21088: Bugfix for curses.window.addch() regression in 3.4.0.
In porting to Argument Clinic, the first two arguments were reversed.
diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py
index ce8f254..ad10f62 100644
--- a/Lib/test/test_curses.py
+++ b/Lib/test/test_curses.py
@@ -17,6 +17,7 @@
import unittest
from test.support import requires, import_module
+import inspect
requires('curses')
# If either of these don't exist, skip the tests.
@@ -331,6 +332,34 @@
else:
raise AssertionError("TypeError not raised")
+def test_issue21088(stdscr):
+ #
+ # http://bugs.python.org/issue21088
+ #
+ # the bug:
+ # when converting curses.window.addch to Argument Clinic
+ # the first two parameters were switched.
+
+ # if someday we can represent the signature of addch
+ # we will need to rewrite this test.
+ try:
+ signature = inspect.signature(stdscr.addch)
+ self.assertFalse(signature)
+ except ValueError:
+ # not generating a signature is fine.
+ pass
+
+ # So. No signature for addch.
+ # But Argument Clinic gave us a human-readable equivalent
+ # as the first line of the docstring. So we parse that,
+ # and ensure that the parameters appear in the correct order.
+ # Since this is parsing output from Argument Clinic, we can
+ # be reasonably certain the generated parsing code will be
+ # correct too.
+ human_readable_signature = stdscr.addch.__doc__.split("\n")[0]
+ offset = human_readable_signature.find("[y, x,]")
+ assert offset >= 0, ""
+
def main(stdscr):
curses.savetty()
try:
@@ -344,6 +373,7 @@
test_unget_wch(stdscr)
test_issue10570()
test_encoding(stdscr)
+ test_issue21088(stdscr)
finally:
curses.resetty()