summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey B Kirpichev <skirpichev@gmail.com>2024-07-03 10:45:43 (GMT)
committerGitHub <noreply@github.com>2024-07-03 10:45:43 (GMT)
commitafee76b6ebeefbbc2935ab4f5320355c6fa390dd (patch)
tree345bb41b5a5d4925dccb95849a988683b04a9860
parent722229e5dc1e499664966e50bb98065670033300 (diff)
downloadcpython-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.py27
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(