[FYI] Two fixes for test suite's terminal

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[FYI] Two fixes for test suite's terminal

Tom Tromey-2
Exactly which escape sequences are emitted by gdb in TUI mode are
determined largely by the curses implementation.  Testing my latest
(as yet unsubmitted) series to refactor the TUI showed a couple of
failures that I tracked to the test suite's terminal implementation.

In particular, the CSI "@" sequence was not implemented; and the CSI
"X" sequence was implemented incorrectly.

This patch fixes both of these problems.  Tested on x86-64 Fedora 28.

gdb/testsuite/ChangeLog
2019-07-29  Tom Tromey  <[hidden email]>

        * lib/tuiterm.exp (Term::_csi_@): New proc.
        (Term::_csi_X): Don't move cursor.
---
 gdb/testsuite/ChangeLog       |  5 +++++
 gdb/testsuite/lib/tuiterm.exp | 27 ++++++++++++++++++++++++++-
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/lib/tuiterm.exp b/gdb/testsuite/lib/tuiterm.exp
index c58b7cfda21..d94fd431d8a 100644
--- a/gdb/testsuite/lib/tuiterm.exp
+++ b/gdb/testsuite/lib/tuiterm.exp
@@ -104,6 +104,21 @@ namespace eval Term {
  set _cur_x 0
     }
 
+    # Make room for characters.
+    proc _csi_@ {args} {
+ set n [_default [lindex $args 0] 1]
+ variable _cur_x
+ variable _cur_y
+ variable _chars
+ set in_x $_cur_x
+ set out_x [expr {$_cur_x + $n}]
+ for {set i 0} {$i < $n} {incr i} {
+    set _chars($out_x,$_cur_y) $_chars($in_x,$_cur_y)
+    incr in_x
+    incr out_x
+ }
+    }
+
     # Cursor Up.
     proc _csi_A {args} {
  variable _cur_y
@@ -238,7 +253,17 @@ namespace eval Term {
     # Erase chars.
     proc _csi_X {args} {
  set n [_default [lindex $args 0] 1]
- _insert [string repeat " " $n]
+ # Erase characters but don't move cursor.
+ variable _cur_x
+ variable _cur_y
+ variable _attrs
+ variable _chars
+ set lattr [array get _attrs]
+ set x $_cur_x
+ for {set i 0} {$i < $n} {incr i} {
+    set _chars($x,$_cur_y) [list " " $lattr]
+    incr x
+ }
     }
 
     # Repeat.
--
2.17.2