Skip to content

Commit

Permalink
Test pasting with/without paste mode
Browse files Browse the repository at this point in the history
  • Loading branch information
mgmacias95 committed Apr 28, 2024
1 parent cf9bd26 commit b064e1f
Showing 1 changed file with 58 additions and 1 deletion.
59 changes: 58 additions & 1 deletion Lib/test/test_pyrepl.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import curses
import itertools
import os
import rlcompleter
import sys
Expand Down Expand Up @@ -379,7 +380,6 @@ def test_global_namespace_completion(self):

namespace = {"python": None}
reader = self.prepare_reader(events, namespace)

output = multiline_input(reader, namespace)
self.assertEqual(output, "python")

Expand Down Expand Up @@ -488,5 +488,62 @@ def test_push_unrecognized_escape_sequence(self):
self.assertEqual(eq.events[2].data, "Z")


class TestPasteEvent(TestCase):
def setUp(self) -> None:
curses.setupterm()
return super().setUp()

def prepare_reader(self, events):
console = FakeConsole(events)
reader = ReadlineAlikeReader(console)
reader.config = ReadlineConfig()
reader.config.readline_completer = None
return reader

def code_to_events(self, code):
for c in code:
yield Event(evt='key', data=c, raw=bytearray(c.encode('utf-8')))

def test_paste(self):
code = (
'def a():\n'
' for x in range(10):\n'
' if x%2:\n'
' print(x)\n'
' else:\n'
' pass\n\n'
)

events = itertools.chain([
Event(evt='key', data='f3', raw=bytearray(b'\x1bOR')),
], self.code_to_events(code))
reader = self.prepare_reader(events)
output = multiline_input(reader)
self.assertEqual(output, code[:-1])

def test_paste_not_in_paste_mode(self):
input_code = (
'def a():\n'
' for x in range(10):\n'
' if x%2:\n'
' print(x)\n'
' else:\n'
' pass\n\n'
)

output_code = (
'def a():\n'
' for x in range(10):\n'
' if x%2:\n'
' print(x)\n'
' else:'
)

events = self.code_to_events(input_code)
reader = self.prepare_reader(events)
output = multiline_input(reader)
self.assertEqual(output, output_code)


if __name__ == "__main__":
unittest.main()

0 comments on commit b064e1f

Please sign in to comment.