summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_pyrepl/test_pyrepl.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2024-07-03 11:11:41 (GMT)
committerGitHub <noreply@github.com>2024-07-03 11:11:41 (GMT)
commit251667340e9994ed209e2f53f923ac9fb24b3974 (patch)
tree52c4986b0a2c48dee6ee2063fff2613d86840910 /Lib/test/test_pyrepl/test_pyrepl.py
parent3302c5f1552233fc25dffc780355afe946b58ee3 (diff)
downloadcpython-251667340e9994ed209e2f53f923ac9fb24b3974.zip
cpython-251667340e9994ed209e2f53f923ac9fb24b3974.tar.gz
cpython-251667340e9994ed209e2f53f923ac9fb24b3974.tar.bz2
[3.13] gh-121245: a regression test for site.register_readline() (GH-121259) (#121322)
Diffstat (limited to 'Lib/test/test_pyrepl/test_pyrepl.py')
-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(