diff options
author | Sergey B Kirpichev <skirpichev@gmail.com> | 2024-07-03 10:45:43 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-03 10:45:43 (GMT) |
commit | afee76b6ebeefbbc2935ab4f5320355c6fa390dd (patch) | |
tree | 345bb41b5a5d4925dccb95849a988683b04a9860 | |
parent | 722229e5dc1e499664966e50bb98065670033300 (diff) | |
download | cpython-afee76b6ebeefbbc2935ab4f5320355c6fa390dd.zip cpython-afee76b6ebeefbbc2935ab4f5320355c6fa390dd.tar.gz cpython-afee76b6ebeefbbc2935ab4f5320355c6fa390dd.tar.bz2 |
gh-121245: a regression test for site.register_readline() (#121259)
-rw-r--r-- | Lib/test/test_pyrepl/test_pyrepl.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Lib/test/test_pyrepl/test_pyrepl.py b/Lib/test/test_pyrepl/test_pyrepl.py index b189d32..93c8046 100644 --- a/Lib/test/test_pyrepl/test_pyrepl.py +++ b/Lib/test/test_pyrepl/test_pyrepl.py @@ -1,14 +1,17 @@ import io import itertools import os +import pathlib import rlcompleter import select import subprocess import sys +import tempfile from unittest import TestCase, skipUnless from unittest.mock import patch from test.support import force_not_colorized from test.support import SHORT_TIMEOUT +from test.support.os_helper import unlink from .support import ( FakeConsole, @@ -898,6 +901,30 @@ class TestMain(TestCase): self.assertNotIn("Exception", output) self.assertNotIn("Traceback", output) + def test_not_wiping_history_file(self): + hfile = tempfile.NamedTemporaryFile(delete=False) + self.addCleanup(unlink, hfile.name) + env = os.environ.copy() + env["PYTHON_HISTORY"] = hfile.name + commands = "123\nspam\nexit()\n" + + env.pop("PYTHON_BASIC_REPL", None) + output, exit_code = self.run_repl(commands, env=env) + self.assertEqual(exit_code, 0) + self.assertIn("123", output) + self.assertIn("spam", output) + self.assertNotEqual(pathlib.Path(hfile.name).stat().st_size, 0) + + hfile.file.truncate() + hfile.close() + + env["PYTHON_BASIC_REPL"] = "1" + output, exit_code = self.run_repl(commands, env=env) + self.assertEqual(exit_code, 0) + self.assertIn("123", output) + self.assertIn("spam", output) + self.assertNotEqual(pathlib.Path(hfile.name).stat().st_size, 0) + def run_repl(self, repl_input: str | list[str], env: dict | None = None) -> tuple[str, int]: master_fd, slave_fd = pty.openpty() process = subprocess.Popen( |