Issue #19884: readline: Disable the meta modifier key if stdout is not a
terminal to not write the ANSI sequence "\033[1034h" into stdout. This sequence is used on some terminal (ex: TERM=xterm-256color") to enable support of 8 bit characters.
This commit is contained in:
parent
cdb2c601db
commit
a3c80ce8b7
|
@ -1,17 +1,20 @@
|
||||||
"""
|
"""
|
||||||
Very minimal unittests for parts of the readline module.
|
Very minimal unittests for parts of the readline module.
|
||||||
|
|
||||||
These tests were added to check that the libedit emulation on OSX and
|
|
||||||
the "real" readline have the same interface for history manipulation. That's
|
|
||||||
why the tests cover only a small subset of the interface.
|
|
||||||
"""
|
"""
|
||||||
|
import os
|
||||||
import unittest
|
import unittest
|
||||||
from test.support import run_unittest, import_module
|
from test.support import run_unittest, import_module
|
||||||
|
from test.script_helper import assert_python_ok
|
||||||
|
|
||||||
# Skip tests if there is no readline module
|
# Skip tests if there is no readline module
|
||||||
readline = import_module('readline')
|
readline = import_module('readline')
|
||||||
|
|
||||||
class TestHistoryManipulation (unittest.TestCase):
|
class TestHistoryManipulation (unittest.TestCase):
|
||||||
|
"""
|
||||||
|
These tests were added to check that the libedit emulation on OSX and the
|
||||||
|
"real" readline have the same interface for history manipulation. That's
|
||||||
|
why the tests cover only a small subset of the interface.
|
||||||
|
"""
|
||||||
|
|
||||||
@unittest.skipIf(not hasattr(readline, 'clear_history'),
|
@unittest.skipIf(not hasattr(readline, 'clear_history'),
|
||||||
"The history update test cannot be run because the "
|
"The history update test cannot be run because the "
|
||||||
|
@ -40,8 +43,18 @@ class TestHistoryManipulation (unittest.TestCase):
|
||||||
self.assertEqual(readline.get_current_history_length(), 1)
|
self.assertEqual(readline.get_current_history_length(), 1)
|
||||||
|
|
||||||
|
|
||||||
|
class TestReadline(unittest.TestCase):
|
||||||
|
def test_init(self):
|
||||||
|
# Issue #19884: Ensure that the ANSI sequence "\033[1034h" is not
|
||||||
|
# written into stdout when the readline module is imported and stdout
|
||||||
|
# is redirected to a pipe.
|
||||||
|
rc, stdout, stderr = assert_python_ok('-c', 'import readline',
|
||||||
|
TERM='xterm-256color')
|
||||||
|
self.assertEqual(stdout, b'')
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
run_unittest(TestHistoryManipulation)
|
run_unittest(TestHistoryManipulation, TestReadline)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
test_main()
|
test_main()
|
||||||
|
|
|
@ -27,6 +27,11 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #19884: readline: Disable the meta modifier key if stdout is not
|
||||||
|
a terminal to not write the ANSI sequence "\033[1034h" into stdout. This
|
||||||
|
sequence is used on some terminal (ex: TERM=xterm-256color") to enable
|
||||||
|
support of 8 bit characters.
|
||||||
|
|
||||||
- Issue #21888: plistlib's load() and loads() now work if the fmt parameter is
|
- Issue #21888: plistlib's load() and loads() now work if the fmt parameter is
|
||||||
specified.
|
specified.
|
||||||
|
|
||||||
|
|
|
@ -1019,6 +1019,17 @@ setup_readline(readlinestate *mod_state)
|
||||||
|
|
||||||
mod_state->begidx = PyLong_FromLong(0L);
|
mod_state->begidx = PyLong_FromLong(0L);
|
||||||
mod_state->endidx = PyLong_FromLong(0L);
|
mod_state->endidx = PyLong_FromLong(0L);
|
||||||
|
|
||||||
|
if (!isatty(STDOUT_FILENO)) {
|
||||||
|
/* Issue #19884: stdout is no a terminal. Disable meta modifier
|
||||||
|
keys to not write the ANSI sequence "\033[1034h" into stdout. On
|
||||||
|
terminals supporting 8 bit characters like TERM=xterm-256color
|
||||||
|
(which is now the default Fedora since Fedora 18), the meta key is
|
||||||
|
used to enable support of 8 bit characters (ANSI sequence
|
||||||
|
"\033[1034h"). */
|
||||||
|
rl_variable_bind ("enable-meta-key", "off");
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize (allows .inputrc to override)
|
/* Initialize (allows .inputrc to override)
|
||||||
*
|
*
|
||||||
* XXX: A bug in the readline-2.2 library causes a memory leak
|
* XXX: A bug in the readline-2.2 library causes a memory leak
|
||||||
|
|
Loading…
Reference in New Issue