aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/test/test_pyrepl/test_pyrepl.py
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2024-09-06 13:15:00 +0200
committerGitHub <noreply@github.com>2024-09-06 13:15:00 +0200
commit8311b11800509c975023e062e2c336f417c5e4c0 (patch)
tree043fe248bcbf084b30276f8b42754cb479e1e3ed /Lib/test/test_pyrepl/test_pyrepl.py
parentd683f49a7b0635a26150cfbb398a3d93b227a74e (diff)
downloadcpython-8311b11800509c975023e062e2c336f417c5e4c0.tar.gz
cpython-8311b11800509c975023e062e2c336f417c5e4c0.zip
gh-119034, REPL: Change page up/down keys to search in history (#123607)
Change <page up> and <page down> keys of the Python REPL to history search forward/backward. 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 d9d83c4c07e..84030e05d2a 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):