Skip to content

Commit 9585bd6

Browse files
committed
Adapt tests
1 parent 4d7ae36 commit 9585bd6

3 files changed

Lines changed: 28 additions & 14 deletions

File tree

Lib/test/test_pyrepl/test_pyrepl.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,20 @@ def run_repl(
4545
cmdline_args: list[str] | None = None,
4646
cwd: str | None = None,
4747
skip: bool = False,
48+
timeout: float = SHORT_TIMEOUT,
4849
) -> tuple[str, int]:
4950
temp_dir = None
5051
if cwd is None:
5152
temp_dir = tempfile.TemporaryDirectory(ignore_cleanup_errors=True)
5253
cwd = temp_dir.name
5354
try:
5455
return self._run_repl(
55-
repl_input, env=env, cmdline_args=cmdline_args, cwd=cwd, skip=skip,
56+
repl_input,
57+
env=env,
58+
cmdline_args=cmdline_args,
59+
cwd=cwd,
60+
skip=skip,
61+
timeout=timeout,
5662
)
5763
finally:
5864
if temp_dir is not None:
@@ -66,6 +72,7 @@ def _run_repl(
6672
cmdline_args: list[str] | None,
6773
cwd: str,
6874
skip: bool,
75+
timeout: float,
6976
) -> tuple[str, int]:
7077
assert pty
7178
master_fd, slave_fd = pty.openpty()
@@ -103,7 +110,7 @@ def _run_repl(
103110
os.write(master_fd, repl_input.encode("utf-8"))
104111

105112
output = []
106-
while select.select([master_fd], [], [], SHORT_TIMEOUT)[0]:
113+
while select.select([master_fd], [], [], timeout)[0]:
107114
try:
108115
data = os.read(master_fd, 1024).decode("utf-8")
109116
if not data:
@@ -114,12 +121,12 @@ def _run_repl(
114121
else:
115122
os.close(master_fd)
116123
process.kill()
117-
process.wait(timeout=SHORT_TIMEOUT)
124+
process.wait(timeout=timeout)
118125
self.fail(f"Timeout while waiting for output, got: {''.join(output)}")
119126

120127
os.close(master_fd)
121128
try:
122-
exit_code = process.wait(timeout=SHORT_TIMEOUT)
129+
exit_code = process.wait(timeout=timeout)
123130
except subprocess.TimeoutExpired:
124131
process.kill()
125132
exit_code = process.wait()
@@ -1561,25 +1568,29 @@ def test_readline_history_file(self):
15611568

15621569
def test_history_survive_crash(self):
15631570
env = os.environ.copy()
1564-
commands = "1\nexit()\n"
1565-
output, exit_code = self.run_repl(commands, env=env, skip=True)
15661571

15671572
with tempfile.NamedTemporaryFile() as hfile:
15681573
env["PYTHON_HISTORY"] = hfile.name
1569-
commands = "spam\nimport time\ntime.sleep(1000)\npreved\n"
1574+
1575+
commands = "1\n2\n3\nexit()\n"
1576+
output, exit_code = self.run_repl(commands, env=env, skip=True)
1577+
1578+
commands = "spam\nimport time\ntime.sleep(1000)\nquit\n"
15701579
try:
1571-
self.run_repl(commands, env=env)
1580+
self.run_repl(commands, env=env, timeout=3)
15721581
except AssertionError:
15731582
pass
15741583

15751584
history = pathlib.Path(hfile.name).read_text()
1585+
self.assertIn("2", history)
1586+
self.assertIn("exit()", history)
15761587
self.assertIn("spam", history)
1577-
self.assertIn("time", history)
1588+
self.assertIn("import time", history)
15781589
self.assertNotIn("sleep", history)
1579-
self.assertNotIn("preved", history)
1590+
self.assertNotIn("quit", history)
15801591

15811592
def test_keyboard_interrupt_after_isearch(self):
1582-
output, exit_code = self.run_repl(["\x12", "\x03", "exit"])
1593+
output, exit_code = self.run_repl("\x12\x03exit\n")
15831594
self.assertEqual(exit_code, 0)
15841595

15851596
def test_prompt_after_help(self):

Lib/test/test_pyrepl/test_reader.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77

88
from .support import handle_all_events, handle_events_narrow_console
99
from .support import ScreenEqualMixin, code_to_events
10-
from .support import prepare_reader, prepare_console, reader_force_colors
10+
from .support import prepare_console, reader_force_colors
11+
from .support import reader_no_colors as prepare_reader
1112
from _pyrepl.console import Event
1213
from _pyrepl.reader import Reader
1314
from _pyrepl.utils import TAG_TO_ANSI
@@ -131,7 +132,7 @@ def test_control_characters(self):
131132
events = code_to_events(code)
132133
reader, _ = handle_all_events(events, prepare_reader=reader_force_colors)
133134
self.assert_screen_equal(reader, 'flag = "🏳️\\u200d🌈"', clean=True)
134-
self.assert_screen_equal(reader, 'flag = {s}"🏳️\\u200d🌈"{z}'.format(**colors))
135+
self.assert_screen_equal(reader, 'flag {o}={z} {s}"🏳️\\u200d🌈"{z}'.format(**colors))
135136

136137
def test_setpos_from_xy_multiple_lines(self):
137138
# fmt: off

Lib/test/test_pyrepl/test_unix_console.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@ def unix_console(events, **kwargs):
3333

3434
handle_events_unix_console = partial(
3535
handle_all_events,
36-
prepare_console=partial(unix_console),
36+
prepare_reader=reader_no_colors,
37+
prepare_console=unix_console,
3738
)
3839
handle_events_narrow_unix_console = partial(
3940
handle_all_events,
41+
prepare_reader=reader_no_colors,
4042
prepare_console=partial(unix_console, width=5),
4143
)
4244
handle_events_short_unix_console = partial(

0 commit comments

Comments
 (0)