gh-118682: Revert forcing str commands, allow class commands in pyrepl (#118709)

This commit is contained in:
Lysandros Nikolaou 2024-05-07 16:31:56 +02:00 committed by GitHub
parent 71080b8a0f
commit e5413ec783
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 3 deletions

View File

@ -568,12 +568,16 @@ class Reader:
"""`cmd` is a tuple of "event_name" and "event", which in the current
implementation is always just the "buffer" which happens to be a list
of single-character strings."""
assert isinstance(cmd[0], str)
trace("received command {cmd}", cmd=cmd)
command_type = self.commands.get(cmd[0], commands.invalid_command)
command = command_type(self, *cmd) # type: ignore[arg-type]
if isinstance(cmd[0], str):
command_type = self.commands.get(cmd[0], commands.invalid_command)
elif isinstance(cmd[0], type):
command_type = cmd[0]
else:
return # nothing to do
command = command_type(self, *cmd) # type: ignore[arg-type]
command.do()
self.after_command(command)

View File

@ -976,6 +976,15 @@ class TestReader(TestCase):
reader.setpos_from_xy(0, 1)
self.assertEqual(reader.pos, 9)
def test_up_arrow_after_ctrl_r(self):
events = iter([
Event(evt='key', data='\x12', raw=bytearray(b'\x12')),
Event(evt='key', data='up', raw=bytearray(b'\x1bOA')),
])
reader, _ = handle_all_events(events)
self.assert_screen_equals(reader, "")
if __name__ == "__main__":
unittest.main()