• Home
  • Raw
  • Download

Lines Matching full:readline

2 Very minimal unittests for parts of the readline module.
17 # Skip tests if there is no readline module
18 readline = import_module('readline') variable
20 if hasattr(readline, "_READLINE_LIBRARY_VERSION"):
21 is_editline = ("EditLine wrapper" in readline._READLINE_LIBRARY_VERSION)
23 is_editline = readline.backend == "editline"
30 if hasattr(readline, "_READLINE_VERSION"):
31 print(f"readline version: {readline._READLINE_VERSION:#x}")
32 print(f"readline runtime version: {readline._READLINE_RUNTIME_VERSION:#x}")
33 if hasattr(readline, "_READLINE_LIBRARY_VERSION"):
34 print(f"readline library version: {readline._READLINE_LIBRARY_VERSION!r}")
38 @unittest.skipUnless(hasattr(readline, "clear_history"),
44 "real" readline have the same interface for history manipulation. That's
49 readline.clear_history()
51 readline.add_history("first line")
52 readline.add_history("second line")
54 self.assertEqual(readline.get_history_item(0), None)
55 self.assertEqual(readline.get_history_item(1), "first line")
56 self.assertEqual(readline.get_history_item(2), "second line")
58 readline.replace_history_item(0, "replaced line")
59 self.assertEqual(readline.get_history_item(0), None)
60 self.assertEqual(readline.get_history_item(1), "replaced line")
61 self.assertEqual(readline.get_history_item(2), "second line")
63 self.assertEqual(readline.get_current_history_length(), 2)
65 readline.remove_history_item(0)
66 self.assertEqual(readline.get_history_item(0), None)
67 self.assertEqual(readline.get_history_item(1), "second line")
69 self.assertEqual(readline.get_current_history_length(), 1)
71 @unittest.skipUnless(hasattr(readline, "append_history_file"),
80 readline.clear_history()
81 readline.add_history("first line")
82 readline.add_history("second line")
83 readline.write_history_file(hfilename)
85 readline.clear_history()
86 self.assertEqual(readline.get_current_history_length(), 0)
88 readline.read_history_file(hfilename)
89 self.assertEqual(readline.get_current_history_length(), 2)
90 self.assertEqual(readline.get_history_item(1), "first line")
91 self.assertEqual(readline.get_history_item(2), "second line")
94 readline.append_history_file(1, hfilename)
95 readline.clear_history()
96 readline.read_history_file(hfilename)
97 self.assertEqual(readline.get_current_history_length(), 3)
98 self.assertEqual(readline.get_history_item(1), "first line")
99 self.assertEqual(readline.get_history_item(2), "second line")
100 self.assertEqual(readline.get_history_item(3), "second line")
105 readline.append_history_file(1, hfilename)
115 readline.write_history_file(hfilename)
118 readline.clear_history()
120 readline.add_history("entrée 1")
123 readline.add_history("entrée 2")
124 readline.replace_history_item(1, "entrée 22")
125 readline.write_history_file(TESTFN)
127 readline.clear_history()
128 readline.read_history_file(TESTFN)
132 readline.add_history("dummy")
133 self.assertEqual(readline.get_history_item(1), "entrée 1")
134 self.assertEqual(readline.get_history_item(2), "entrée 22")
137 previous_length = readline.get_history_length()
138 self.addCleanup(readline.set_history_length, previous_length)
140 readline.clear_history()
141 readline.add_history("first line")
142 readline.add_history("second line")
143 readline.add_history("third line")
145 readline.set_history_length(2)
146 self.assertEqual(readline.get_history_length(), 2)
147 readline.write_history_file(TESTFN)
150 readline.clear_history()
151 self.assertEqual(readline.get_current_history_length(), 0)
152 self.assertEqual(readline.get_history_length(), 2)
154 readline.read_history_file(TESTFN)
155 self.assertEqual(readline.get_history_item(1), "second line")
156 self.assertEqual(readline.get_history_item(2), "third line")
157 self.assertEqual(readline.get_history_item(3), None)
159 # Readline seems to report an additional history element.
160 self.assertIn(readline.get_current_history_length(), (2, 3))
165 @unittest.skipIf(readline._READLINE_VERSION < 0x0601 and not is_editline,
169 # written into stdout when the readline module is imported and stdout
171 rc, stdout, stderr = assert_python_ok('-c', 'import readline',
176 self.assertIn(readline.backend, ("readline", "editline"))
179 import readline
180 readline.set_auto_history({})
182 print("History length:", readline.get_current_history_length())
199 import readline
204 if readline.backend == "editline":
205 readline.parse_and_bind(r'bind "\\t" rl_complete')
207 readline.parse_and_bind(r'"\\t": complete')
208 readline.set_completer_delims(" \\t\\n")
209 readline.set_completer(complete)
221 # readline or ncurses ignores non-ASCII bytes on read.
225 readline.add_history("\xEB\xEF")
229 script = r"""import readline
231 is_editline = readline.backend == "editline"
234 set_pre_input_hook = getattr(readline, "set_pre_input_hook", None)
241 readline.parse_and_bind(r'bind ^B ed-prev-char')
242 readline.parse_and_bind(r'bind "\t" rl_complete')
243 readline.parse_and_bind(r'bind -s ^A "{}"'.format(macro))
245 readline.parse_and_bind(r'Control-b: backward-char')
246 readline.parse_and_bind(r'"\t": complete')
247 readline.parse_and_bind(r'set disable-completion off')
248 readline.parse_and_bind(r'set show-all-if-ambiguous off')
249 readline.parse_and_bind(r'set show-all-if-unmodified off')
250 readline.parse_and_bind(r'Control-a: "{}"'.format(macro))
253 readline.insert_text(inserted)
254 readline.redisplay()
262 print("line", ascii(readline.get_line_buffer()))
263 print("indexes", readline.get_begidx(), readline.get_endidx())
270 readline.set_completer(completer)
275 readline.set_completion_display_matches_hook(display)
278 print("history", ascii(readline.get_history_item(1)))
296 # start and end values calls back into readline.c's
300 if not is_editline and hasattr(readline, "set_pre_input_hook"):
310 # - readline: history size was added in 6.0
311 # See https://cnswww.cns.cwru.edu/php/chet/readline/CHANGES
314 @unittest.skipIf(readline._READLINE_VERSION < 0x600,
315 "this readline version does not support history-size")
327 # history_size * 2 items crashes readline
334 import readline
337 readline.read_history_file(history_file)
339 readline.write_history_file(history_file)
355 """gh-123321: readline should be thread-safe and not crash"""
378 previous_length = readline.get_history_length()
379 self.addCleanup(readline.set_history_length, previous_length)
381 readline.add_history("first line")
382 readline.add_history("second line")
383 readline.add_history("third line")
385 readline.set_history_length(2)
386 self.assertEqual(readline.get_history_length(), 2)
387 readline.write_history_file(TESTFN)
390 readline.read_history_file(TESTFN)