summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_pyrepl/test_pyrepl.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-09-06 12:04:11 (GMT)
committerGitHub <noreply@github.com>2024-09-06 12:04:11 (GMT)
commitc787a5161ca147cb8f9867c3a61b7ab4edf6c2a7 (patch)
treefb125fc68d39dcb2d9a22fc2c3e1a0e7452e34e5 /Lib/test/test_pyrepl/test_pyrepl.py
parentb221c5bba16d1406abbef13eba30b944bbcc92e1 (diff)
downloadcpython-c787a5161ca147cb8f9867c3a61b7ab4edf6c2a7.zip
cpython-c787a5161ca147cb8f9867c3a61b7ab4edf6c2a7.tar.gz
cpython-c787a5161ca147cb8f9867c3a61b7ab4edf6c2a7.tar.bz2
[3.13] gh-119034, REPL: Change page up/down keys to search in history (GH-123607) (GH-123773)
Change <page up> and <page down> keys of the Python REPL to history search forward/backward. (cherry picked from commit 8311b11800509c975023e062e2c336f417c5e4c0) Co-authored-by: Victor Stinner <vstinner@python.org> Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
Diffstat (limited to 'Lib/test/test_pyrepl/test_pyrepl.py')
-rw-r--r--Lib/test/test_pyrepl/test_pyrepl.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/Lib/test/test_pyrepl/test_pyrepl.py b/Lib/test/test_pyrepl/test_pyrepl.py
index d9d83c4..84030e0 100644
--- a/Lib/test/test_pyrepl/test_pyrepl.py
+++ b/Lib/test/test_pyrepl/test_pyrepl.py
@@ -676,6 +676,45 @@ class TestPyReplOutput(TestCase):
self.assertEqual(output, "c\x1d")
self.assertEqual(clean_screen(reader.screen), "c")
+ def test_history_search_backward(self):
+ # Test <page up> history search backward with "imp" input
+ events = itertools.chain(
+ code_to_events("import os\n"),
+ code_to_events("imp"),
+ [
+ Event(evt='key', data='page up', raw=bytearray(b'\x1b[5~')),
+ Event(evt="key", data="\n", raw=bytearray(b"\n")),
+ ],
+ )
+
+ # fill the history
+ reader = self.prepare_reader(events)
+ multiline_input(reader)
+
+ # search for "imp" in history
+ output = multiline_input(reader)
+ self.assertEqual(output, "import os")
+ self.assertEqual(clean_screen(reader.screen), "import os")
+
+ def test_history_search_backward_empty(self):
+ # Test <page up> history search backward with an empty input
+ events = itertools.chain(
+ code_to_events("import os\n"),
+ [
+ Event(evt='key', data='page up', raw=bytearray(b'\x1b[5~')),
+ Event(evt="key", data="\n", raw=bytearray(b"\n")),
+ ],
+ )
+
+ # fill the history
+ reader = self.prepare_reader(events)
+ multiline_input(reader)
+
+ # search backward in history
+ output = multiline_input(reader)
+ self.assertEqual(output, "import os")
+ self.assertEqual(clean_screen(reader.screen), "import os")
+
class TestPyReplCompleter(TestCase):
def prepare_reader(self, events, namespace):