1717 more_lines ,
1818 multiline_input ,
1919 code_to_events ,
20+ clean_screen
2021)
2122from _pyrepl .console import Event
2223from _pyrepl .readline import ReadlineAlikeReader , ReadlineConfig
@@ -486,6 +487,7 @@ def test_basic(self):
486487
487488 output = multiline_input (reader )
488489 self .assertEqual (output , "1+1" )
490+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
489491
490492 def test_multiline_edit (self ):
491493 events = itertools .chain (
@@ -515,8 +517,10 @@ def test_multiline_edit(self):
515517
516518 output = multiline_input (reader )
517519 self .assertEqual (output , "def f():\n ...\n " )
520+ self .assertEqual (clean_screen (reader .screen ), "def f():\n ..." )
518521 output = multiline_input (reader )
519522 self .assertEqual (output , "def g():\n pass\n " )
523+ self .assertEqual (clean_screen (reader .screen ), "def g():\n pass" )
520524
521525 def test_history_navigation_with_up_arrow (self ):
522526 events = itertools .chain (
@@ -535,12 +539,40 @@ def test_history_navigation_with_up_arrow(self):
535539
536540 output = multiline_input (reader )
537541 self .assertEqual (output , "1+1" )
542+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
538543 output = multiline_input (reader )
539544 self .assertEqual (output , "2+2" )
545+ self .assertEqual (clean_screen (reader .screen ), "2+2" )
540546 output = multiline_input (reader )
541547 self .assertEqual (output , "2+2" )
548+ self .assertEqual (clean_screen (reader .screen ), "2+2" )
542549 output = multiline_input (reader )
543550 self .assertEqual (output , "1+1" )
551+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
552+
553+ def test_history_with_multiline_entries (self ):
554+ code = "def foo():\n x = 1\n y = 2\n z = 3\n \n def bar():\n return 42\n \n "
555+ events = list (itertools .chain (
556+ code_to_events (code ),
557+ [
558+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
559+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
560+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
561+ Event (evt = "key" , data = "\n " , raw = bytearray (b"\n " )),
562+ Event (evt = "key" , data = "\n " , raw = bytearray (b"\n " )),
563+ ]
564+ ))
565+
566+ reader = self .prepare_reader (events )
567+ output = multiline_input (reader )
568+ output = multiline_input (reader )
569+ output = multiline_input (reader )
570+ self .assertEqual (
571+ clean_screen (reader .screen ),
572+ 'def foo():\n x = 1\n y = 2\n z = 3'
573+ )
574+ self .assertEqual (output , "def foo():\n x = 1\n y = 2\n z = 3\n " )
575+
544576
545577 def test_history_navigation_with_down_arrow (self ):
546578 events = itertools .chain (
@@ -558,6 +590,7 @@ def test_history_navigation_with_down_arrow(self):
558590
559591 output = multiline_input (reader )
560592 self .assertEqual (output , "1+1" )
593+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
561594
562595 def test_history_search (self ):
563596 events = itertools .chain (
@@ -574,18 +607,23 @@ def test_history_search(self):
574607
575608 output = multiline_input (reader )
576609 self .assertEqual (output , "1+1" )
610+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
577611 output = multiline_input (reader )
578612 self .assertEqual (output , "2+2" )
613+ self .assertEqual (clean_screen (reader .screen ), "2+2" )
579614 output = multiline_input (reader )
580615 self .assertEqual (output , "3+3" )
616+ self .assertEqual (clean_screen (reader .screen ), "3+3" )
581617 output = multiline_input (reader )
582618 self .assertEqual (output , "1+1" )
619+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
583620
584621 def test_control_character (self ):
585622 events = code_to_events ("c\x1d \n " )
586623 reader = self .prepare_reader (events )
587624 output = multiline_input (reader )
588625 self .assertEqual (output , "c\x1d " )
626+ self .assertEqual (clean_screen (reader .screen ), "c" )
589627
590628
591629class TestPyReplCompleter (TestCase ):
0 commit comments