summaryrefslogtreecommitdiff
path: root/Lib/test
diff options
context:
space:
mode:
authorLarry Hastings <larry@hastings.org>2014-05-04 04:41:18 -0700
committerLarry Hastings <larry@hastings.org>2014-05-04 04:41:18 -0700
commit9147a9697ac60a9fff739394056992a61d207a16 (patch)
tree9ff37507d7ff7af438f943ac2f3ab9e7e2bb3d5c /Lib/test
parent88b5b6ddf60c38f54d0c656d883b0aed6cb03987 (diff)
downloadcpython-git-9147a9697ac60a9fff739394056992a61d207a16.tar.gz
Issue #21088: Bugfix for curses.window.addch() regression in 3.4.0.
In porting to Argument Clinic, the first two arguments were reversed.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_curses.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/Lib/test/test_curses.py b/Lib/test/test_curses.py
index ce8f254bbb..ad10f620b3 100644
--- a/Lib/test/test_curses.py
+++ b/Lib/test/test_curses.py
@@ -17,6 +17,7 @@ import sys, tempfile, os
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 @@ def test_encoding(stdscr):
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 @@ def main(stdscr):
test_unget_wch(stdscr)
test_issue10570()
test_encoding(stdscr)
+ test_issue21088(stdscr)
finally:
curses.resetty()