From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Mon, 17 Jan 2022 13:47:21 +0000 (-0800) Subject: bpo-13886: Skip PTY non-ASCII tests if readline is loaded (GH-30631) (GH-30635) X-Git-Tag: v3.9.11~162 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0fbb9afbddb93408e34bdb7625002374cb2ad68c;p=thirdparty%2FPython%2Fcpython.git bpo-13886: Skip PTY non-ASCII tests if readline is loaded (GH-30631) (GH-30635) Skip test_builtin PTY tests on non-ASCII characters if the readline module is loaded. The readline module changes input() behavior, but test_builtin is not intented to test the readline module. When the readline module is loaded, PyOS_Readline() uses the readline implementation. In some cases, the Python readline callback rlhandler() is called by readline with a string without non-ASCII characters. (cherry picked from commit ad6e640f910787e73fd00f59117fbd22cdf88c78) Co-authored-by: Victor Stinner Co-authored-by: Victor Stinner --- diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index d009f57e47e0..1f224bfe1ba9 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -1980,12 +1980,24 @@ class PtyTests(unittest.TestCase): # is different and invokes GNU readline if available). self.check_input_tty("prompt", b"quux") + def skip_if_readline(self): + # bpo-13886: When the readline module is loaded, PyOS_Readline() uses + # the readline implementation. In some cases, the Python readline + # callback rlhandler() is called by readline with a string without + # non-ASCII characters. Skip tests on non-ASCII characters if the + # readline module is loaded, since test_builtin is not intented to test + # the readline module, but the builtins module. + if 'readline' in sys.modules: + self.skipTest("the readline module is loaded") + def test_input_tty_non_ascii(self): - # Check stdin/stdout encoding is used when invoking GNU readline + self.skip_if_readline() + # Check stdin/stdout encoding is used when invoking PyOS_Readline() self.check_input_tty("prompté", b"quux\xe9", "utf-8") def test_input_tty_non_ascii_unicode_errors(self): - # Check stdin/stdout error handler is used when invoking GNU readline + self.skip_if_readline() + # Check stdin/stdout error handler is used when invoking PyOS_Readline() self.check_input_tty("prompté", b"quux\xe9", "ascii") def test_input_no_stdout_fileno(self): diff --git a/Misc/NEWS.d/next/Tests/2022-01-17-13-10-04.bpo-13886.5mZH4b.rst b/Misc/NEWS.d/next/Tests/2022-01-17-13-10-04.bpo-13886.5mZH4b.rst new file mode 100644 index 000000000000..cd19dce37d5c --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2022-01-17-13-10-04.bpo-13886.5mZH4b.rst @@ -0,0 +1,3 @@ +Skip test_builtin PTY tests on non-ASCII characters if the readline module +is loaded. The readline module changes input() behavior, but test_builtin is +not intented to test the readline module. Patch by Victor Stinner.