| 335 | @unittest.skipIf(is_editline, |
| 336 | "editline history size configuration is broken") |
| 337 | def test_history_size(self): |
| 338 | history_size = 10 |
| 339 | with temp_dir() as test_dir: |
| 340 | inputrc = os.path.join(test_dir, "inputrc") |
| 341 | with open(inputrc, "wb") as f: |
| 342 | f.write(b"set history-size %d\n" % history_size) |
| 343 | |
| 344 | history_file = os.path.join(test_dir, "history") |
| 345 | with open(history_file, "wb") as f: |
| 346 | # history_size * 2 items crashes readline |
| 347 | data = b"".join(b"item %d\n" % i |
| 348 | for i in range(history_size * 2)) |
| 349 | f.write(data) |
| 350 | |
| 351 | script = """ |
| 352 | import os |
| 353 | import readline |
| 354 | |
| 355 | history_file = os.environ["HISTORY_FILE"] |
| 356 | readline.read_history_file(history_file) |
| 357 | input() |
| 358 | readline.write_history_file(history_file) |
| 359 | """ |
| 360 | |
| 361 | env = dict(os.environ) |
| 362 | env["INPUTRC"] = inputrc |
| 363 | env["HISTORY_FILE"] = history_file |
| 364 | |
| 365 | run_pty(script, input=b"last input\r", env=env) |
| 366 | |
| 367 | with open(history_file, "rb") as f: |
| 368 | lines = f.readlines() |
| 369 | self.assertEqual(len(lines), history_size) |
| 370 | self.assertEqual(lines[-1].strip(), b"last input") |
| 371 | |
| 372 | @requires_working_threading() |
| 373 | def test_gh123321_threadsafe(self): |