Skip to content

Commit 5eb4704

Browse files
committed
Revert existing test and add new test
1 parent 2435b19 commit 5eb4704

1 file changed

Lines changed: 28 additions & 31 deletions

File tree

‎Lib/test/test_pyrepl/test_unix_console.py‎

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from unittest import TestCase
1616
from unittest.mock import MagicMock, call, patch, ANY, Mock
1717

18-
from .support import handle_all_events, code_to_events, more_lines, prepare_reader
18+
from .support import handle_all_events, code_to_events, more_lines
1919

2020
try:
2121
from _pyrepl.console import Event
@@ -248,39 +248,36 @@ def test_cursor_up_down(self, _os_write):
248248
con.restore()
249249

250250
def test_cursor_back_write(self, _os_write):
251-
insert_char = b"<insert-char>"
252-
events = iter(
253-
itertools.chain(
254-
code_to_events("1"),
255-
[Event(evt="key", data="left", raw=bytearray(b"\x1bOD"))],
256-
code_to_events("2"),
257-
)
251+
events = itertools.chain(
252+
code_to_events("1"),
253+
[Event(evt="key", data="left", raw=bytearray(b"\x1bOD"))],
254+
code_to_events("2"),
258255
)
259-
con = unix_console(events, ich1=insert_char)
260-
reader = prepare_reader(con)
261-
262-
_os_write.reset_mock()
263-
reader.handle1()
264-
append_writes = [write.args[1] for write in _os_write.call_args_list]
265-
self.assertIn(b"1", append_writes)
266-
self.assertFalse(any(insert_char in output for output in append_writes))
267-
self.assertEqual(reader.rendered_screen.screen_lines, ("1",))
268-
269-
_os_write.reset_mock()
270-
reader.handle1()
256+
_, con = handle_events_unix_console(events)
257+
_os_write.assert_any_call(ANY, b"1")
271258
_os_write.assert_any_call(ANY, TERM_CAPABILITIES["cub"] + b":1")
259+
_os_write.assert_any_call(ANY, b"2")
260+
con.restore()
272261

273-
_os_write.reset_mock()
274-
reader.handle1()
275-
insertion_writes = [write.args[1] for write in _os_write.call_args_list]
276-
insert_writes = [
277-
index
278-
for index, output in enumerate(insertion_writes)
279-
if insert_char in output
280-
]
281-
self.assertEqual(len(insert_writes), 1)
282-
self.assertEqual(insertion_writes[insert_writes[0] + 1], b"2")
283-
self.assertEqual(reader.rendered_screen.screen_lines, ("21",))
262+
def test_insert_char_only_for_midline_insert(self, _os_write):
263+
insert_char = b"<insert-char>"
264+
events = itertools.chain(
265+
code_to_events("1"),
266+
[Event(evt="key", data="left", raw=bytearray(b"\x1bOD"))],
267+
code_to_events("2"),
268+
)
269+
_, con = handle_all_events(
270+
events,
271+
prepare_console=partial(unix_console, ich1=insert_char),
272+
)
273+
relevant_writes = []
274+
for write in _os_write.call_args_list:
275+
output = write.args[1]
276+
if insert_char in output:
277+
relevant_writes.append(insert_char)
278+
elif output in {b"1", b"2"}:
279+
relevant_writes.append(output)
280+
self.assertEqual(relevant_writes, [b"1", insert_char, b"2"])
284281
con.restore()
285282

286283
def test_multiline_function_move_up_short_terminal(self, _os_write):

0 commit comments

Comments
 (0)