17
17
more_lines ,
18
18
multiline_input ,
19
19
code_to_events ,
20
+ clean_screen
20
21
)
21
22
from _pyrepl .console import Event
22
23
from _pyrepl .readline import ReadlineAlikeReader , ReadlineConfig
@@ -486,6 +487,7 @@ def test_basic(self):
486
487
487
488
output = multiline_input (reader )
488
489
self .assertEqual (output , "1+1" )
490
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
489
491
490
492
def test_multiline_edit (self ):
491
493
events = itertools .chain (
@@ -515,8 +517,10 @@ def test_multiline_edit(self):
515
517
516
518
output = multiline_input (reader )
517
519
self .assertEqual (output , "def f():\n ...\n " )
520
+ self .assertEqual (clean_screen (reader .screen ), "def f():\n ..." )
518
521
output = multiline_input (reader )
519
522
self .assertEqual (output , "def g():\n pass\n " )
523
+ self .assertEqual (clean_screen (reader .screen ), "def g():\n pass" )
520
524
521
525
def test_history_navigation_with_up_arrow (self ):
522
526
events = itertools .chain (
@@ -535,12 +539,40 @@ def test_history_navigation_with_up_arrow(self):
535
539
536
540
output = multiline_input (reader )
537
541
self .assertEqual (output , "1+1" )
542
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
538
543
output = multiline_input (reader )
539
544
self .assertEqual (output , "2+2" )
545
+ self .assertEqual (clean_screen (reader .screen ), "2+2" )
540
546
output = multiline_input (reader )
541
547
self .assertEqual (output , "2+2" )
548
+ self .assertEqual (clean_screen (reader .screen ), "2+2" )
542
549
output = multiline_input (reader )
543
550
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
+
544
576
545
577
def test_history_navigation_with_down_arrow (self ):
546
578
events = itertools .chain (
@@ -558,6 +590,7 @@ def test_history_navigation_with_down_arrow(self):
558
590
559
591
output = multiline_input (reader )
560
592
self .assertEqual (output , "1+1" )
593
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
561
594
562
595
def test_history_search (self ):
563
596
events = itertools .chain (
@@ -574,18 +607,23 @@ def test_history_search(self):
574
607
575
608
output = multiline_input (reader )
576
609
self .assertEqual (output , "1+1" )
610
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
577
611
output = multiline_input (reader )
578
612
self .assertEqual (output , "2+2" )
613
+ self .assertEqual (clean_screen (reader .screen ), "2+2" )
579
614
output = multiline_input (reader )
580
615
self .assertEqual (output , "3+3" )
616
+ self .assertEqual (clean_screen (reader .screen ), "3+3" )
581
617
output = multiline_input (reader )
582
618
self .assertEqual (output , "1+1" )
619
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
583
620
584
621
def test_control_character (self ):
585
622
events = code_to_events ("c\x1d \n " )
586
623
reader = self .prepare_reader (events )
587
624
output = multiline_input (reader )
588
625
self .assertEqual (output , "c\x1d " )
626
+ self .assertEqual (clean_screen (reader .screen ), "c" )
589
627
590
628
591
629
class TestPyReplCompleter (TestCase ):
0 commit comments