21
21
more_lines ,
22
22
multiline_input ,
23
23
code_to_events ,
24
+ clean_screen
24
25
)
25
26
from _pyrepl .console import Event
26
27
from _pyrepl .readline import ReadlineAlikeReader , ReadlineConfig
@@ -490,6 +491,7 @@ def test_basic(self):
490
491
491
492
output = multiline_input (reader )
492
493
self .assertEqual (output , "1+1" )
494
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
493
495
494
496
def test_multiline_edit (self ):
495
497
events = itertools .chain (
@@ -519,8 +521,10 @@ def test_multiline_edit(self):
519
521
520
522
output = multiline_input (reader )
521
523
self .assertEqual (output , "def f():\n ...\n " )
524
+ self .assertEqual (clean_screen (reader .screen ), "def f():\n ..." )
522
525
output = multiline_input (reader )
523
526
self .assertEqual (output , "def g():\n pass\n " )
527
+ self .assertEqual (clean_screen (reader .screen ), "def g():\n pass" )
524
528
525
529
def test_history_navigation_with_up_arrow (self ):
526
530
events = itertools .chain (
@@ -539,12 +543,40 @@ def test_history_navigation_with_up_arrow(self):
539
543
540
544
output = multiline_input (reader )
541
545
self .assertEqual (output , "1+1" )
546
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
542
547
output = multiline_input (reader )
543
548
self .assertEqual (output , "2+2" )
549
+ self .assertEqual (clean_screen (reader .screen ), "2+2" )
544
550
output = multiline_input (reader )
545
551
self .assertEqual (output , "2+2" )
552
+ self .assertEqual (clean_screen (reader .screen ), "2+2" )
546
553
output = multiline_input (reader )
547
554
self .assertEqual (output , "1+1" )
555
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
556
+
557
+ def test_history_with_multiline_entries (self ):
558
+ code = "def foo():\n x = 1\n y = 2\n z = 3\n \n def bar():\n return 42\n \n "
559
+ events = list (itertools .chain (
560
+ code_to_events (code ),
561
+ [
562
+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
563
+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
564
+ Event (evt = "key" , data = "up" , raw = bytearray (b"\x1b OA" )),
565
+ Event (evt = "key" , data = "\n " , raw = bytearray (b"\n " )),
566
+ Event (evt = "key" , data = "\n " , raw = bytearray (b"\n " )),
567
+ ]
568
+ ))
569
+
570
+ reader = self .prepare_reader (events )
571
+ output = multiline_input (reader )
572
+ output = multiline_input (reader )
573
+ output = multiline_input (reader )
574
+ self .assertEqual (
575
+ clean_screen (reader .screen ),
576
+ 'def foo():\n x = 1\n y = 2\n z = 3'
577
+ )
578
+ self .assertEqual (output , "def foo():\n x = 1\n y = 2\n z = 3\n " )
579
+
548
580
549
581
def test_history_navigation_with_down_arrow (self ):
550
582
events = itertools .chain (
@@ -562,6 +594,7 @@ def test_history_navigation_with_down_arrow(self):
562
594
563
595
output = multiline_input (reader )
564
596
self .assertEqual (output , "1+1" )
597
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
565
598
566
599
def test_history_search (self ):
567
600
events = itertools .chain (
@@ -578,18 +611,23 @@ def test_history_search(self):
578
611
579
612
output = multiline_input (reader )
580
613
self .assertEqual (output , "1+1" )
614
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
581
615
output = multiline_input (reader )
582
616
self .assertEqual (output , "2+2" )
617
+ self .assertEqual (clean_screen (reader .screen ), "2+2" )
583
618
output = multiline_input (reader )
584
619
self .assertEqual (output , "3+3" )
620
+ self .assertEqual (clean_screen (reader .screen ), "3+3" )
585
621
output = multiline_input (reader )
586
622
self .assertEqual (output , "1+1" )
623
+ self .assertEqual (clean_screen (reader .screen ), "1+1" )
587
624
588
625
def test_control_character (self ):
589
626
events = code_to_events ("c\x1d \n " )
590
627
reader = self .prepare_reader (events )
591
628
output = multiline_input (reader )
592
629
self .assertEqual (output , "c\x1d " )
630
+ self .assertEqual (clean_screen (reader .screen ), "c" )
593
631
594
632
595
633
class TestPyReplCompleter (TestCase ):
0 commit comments