public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [pushed 1/3] [gdb/testsuite] Fix reverse attribute in tuiterm
@ 2023-05-26 13:02 Tom de Vries
  2023-05-26 13:02 ` [pushed 2/3] [gdb/testsuite] Add invisible and blinking attributes " Tom de Vries
  2023-05-26 13:03 ` [pushed 3/3] [gdb/testsuite] Add test-case gdb.tui/color-prompt.exp Tom de Vries
  0 siblings, 2 replies; 3+ messages in thread
From: Tom de Vries @ 2023-05-26 13:02 UTC (permalink / raw)
  To: gdb-patches

I noticed in proc Term::_csi_m arguments that while parameters 7 and 27 are
supposed to set the reverse attribute to 1 and 0, in fact it's set to 1 in
both cases:
...
 		    7 {
			set _attrs(reverse) 1
		    }
  ...
		    27 {
			set _attrs(reverse) 1
 		    }
...

Fix this and add a regression test in gdb.tui/tuiterm.exp.

Tested on x86_64-linux.
---
 gdb/testsuite/gdb.tui/tuiterm.exp | 36 +++++++++++++++++++++++++++++++
 gdb/testsuite/lib/tuiterm.exp     |  2 +-
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/gdb.tui/tuiterm.exp b/gdb/testsuite/gdb.tui/tuiterm.exp
index 6cc6c628e73..ff0a3ac48ad 100644
--- a/gdb/testsuite/gdb.tui/tuiterm.exp
+++ b/gdb/testsuite/gdb.tui/tuiterm.exp
@@ -676,6 +676,40 @@ proc test_insert_line { } {
     } 2 0
 }
 
+proc test_attrs {} {
+    foreach { attr vals } {
+	reverse {
+	    7 1
+	    27 0
+	}
+	underline {
+	    4 1
+	    24 0
+	}
+	intensity {
+	    1 bold
+	    2 dim
+	    22 normal
+	}
+    } {
+	setup_terminal 8 1
+	set re ""
+	foreach { arg val } $vals {
+	    Term::_insert "a"
+	    Term::_csi_m $arg
+	    append re "a<$attr:$val>"
+	}
+
+	Term::_insert "a"
+	append re "a"
+
+	set re "^$re *$"
+
+	set line [Term::get_line_with_attrs 0]
+	gdb_assert { [regexp $re $line] } "attribute: $attr"
+    }
+}
+
 # Run proc TEST_PROC_NAME with a "small" terminal.
 
 proc run_one_test_small { test_proc_name } {
@@ -727,3 +761,5 @@ foreach_with_prefix test {
 } {
     run_one_test_large $test
 }
+
+test_attrs
diff --git a/gdb/testsuite/lib/tuiterm.exp b/gdb/testsuite/lib/tuiterm.exp
index 5c0be85ee73..49ce79558c6 100644
--- a/gdb/testsuite/lib/tuiterm.exp
+++ b/gdb/testsuite/lib/tuiterm.exp
@@ -590,7 +590,7 @@ namespace eval Term {
 			set _attrs(underline) 0
 		    }
 		    27 {
-			set _attrs(reverse) 1
+			set _attrs(reverse) 0
 		    }
 		    30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 {
 			set _attrs(fg) $item

base-commit: 86b96a79b81fa6fcbb3e136d8c720c4aa6df8eda
-- 
2.35.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [pushed 2/3] [gdb/testsuite] Add invisible and blinking attributes in tuiterm
  2023-05-26 13:02 [pushed 1/3] [gdb/testsuite] Fix reverse attribute in tuiterm Tom de Vries
@ 2023-05-26 13:02 ` Tom de Vries
  2023-05-26 13:03 ` [pushed 3/3] [gdb/testsuite] Add test-case gdb.tui/color-prompt.exp Tom de Vries
  1 sibling, 0 replies; 3+ messages in thread
From: Tom de Vries @ 2023-05-26 13:02 UTC (permalink / raw)
  To: gdb-patches

I noticed curses using the invisible and blinking attributes.

Add these in tuiterm.

Tested on x86_64-linux.
---
 gdb/testsuite/gdb.tui/tuiterm.exp |  8 ++++++++
 gdb/testsuite/lib/tuiterm.exp     | 14 ++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/gdb/testsuite/gdb.tui/tuiterm.exp b/gdb/testsuite/gdb.tui/tuiterm.exp
index ff0a3ac48ad..bccb7ef445a 100644
--- a/gdb/testsuite/gdb.tui/tuiterm.exp
+++ b/gdb/testsuite/gdb.tui/tuiterm.exp
@@ -691,6 +691,14 @@ proc test_attrs {} {
 	    2 dim
 	    22 normal
 	}
+	invisible {
+	    8 1
+	    28 0
+	}
+	blinking {
+	    5 1
+	    25 0
+	}
     } {
 	setup_terminal 8 1
 	set re ""
diff --git a/gdb/testsuite/lib/tuiterm.exp b/gdb/testsuite/lib/tuiterm.exp
index 49ce79558c6..90b885d7ab4 100644
--- a/gdb/testsuite/lib/tuiterm.exp
+++ b/gdb/testsuite/lib/tuiterm.exp
@@ -556,6 +556,8 @@ namespace eval Term {
 	    bg default
 	    underline 0
 	    reverse 0
+	    invisible 0
+	    blinking 0
 	}
     }
 
@@ -580,18 +582,30 @@ namespace eval Term {
 		    4 {
 			set _attrs(underline) 1
 		    }
+		    5 {
+			set _attrs(blinking) 1
+		    }
 		    7 {
 			set _attrs(reverse) 1
 		    }
+		    8 {
+			set _attrs(invisible) 1
+		    }
 		    22 {
 			set _attrs(intensity) normal
 		    }
 		    24 {
 			set _attrs(underline) 0
 		    }
+		    25 {
+			set _attrs(blinking) 0
+		    }
 		    27 {
 			set _attrs(reverse) 0
 		    }
+		    28 {
+			set _attrs(invisible) 0
+		    }
 		    30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 {
 			set _attrs(fg) $item
 		    }
-- 
2.35.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [pushed 3/3] [gdb/testsuite] Add test-case gdb.tui/color-prompt.exp
  2023-05-26 13:02 [pushed 1/3] [gdb/testsuite] Fix reverse attribute in tuiterm Tom de Vries
  2023-05-26 13:02 ` [pushed 2/3] [gdb/testsuite] Add invisible and blinking attributes " Tom de Vries
@ 2023-05-26 13:03 ` Tom de Vries
  1 sibling, 0 replies; 3+ messages in thread
From: Tom de Vries @ 2023-05-26 13:03 UTC (permalink / raw)
  To: gdb-patches

Add a test-case that sets a prompt with color in TUI.

The line containing the prompt is shown by get_line_with_attrs as follows:
...
<fg:31>(gdb) <fg:default>
...

The 31 means red, but only for foreground colors, for background colors 41
means red.

Make this more readable by using color names for both foreground and
background, such that we have instead:
....
<fg:red>(gdb) <fg:default>
...

Tested on x86_64-linux.
---
 gdb/testsuite/gdb.tui/color-prompt.exp | 32 +++++++++++++++++++++++
 gdb/testsuite/gdb.tui/tuiterm.exp      | 24 +++++++++++++++++-
 gdb/testsuite/lib/tuiterm.exp          | 35 ++++++++++++++++++++++++--
 3 files changed, 88 insertions(+), 3 deletions(-)
 create mode 100644 gdb/testsuite/gdb.tui/color-prompt.exp

diff --git a/gdb/testsuite/gdb.tui/color-prompt.exp b/gdb/testsuite/gdb.tui/color-prompt.exp
new file mode 100644
index 00000000000..8482e1b7695
--- /dev/null
+++ b/gdb/testsuite/gdb.tui/color-prompt.exp
@@ -0,0 +1,32 @@
+# Copyright 2023 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Check using a prompt with color in TUI.
+
+tuiterm_env
+
+Term::clean_restart 24 80
+
+# Set colored prompt.
+if {![Term::enter_tui]} {
+    unsupported "TUI not supported"
+    return
+}
+
+Term::command "set prompt \\033\[31m(gdb) \\033\[0m"
+
+set line [Term::get_line_with_attrs $Term::_cur_row]
+gdb_assert { [regexp "^<fg:red>$gdb_prompt <fg:default> *$" $line] } \
+    "prompt with color"
diff --git a/gdb/testsuite/gdb.tui/tuiterm.exp b/gdb/testsuite/gdb.tui/tuiterm.exp
index bccb7ef445a..c1751418130 100644
--- a/gdb/testsuite/gdb.tui/tuiterm.exp
+++ b/gdb/testsuite/gdb.tui/tuiterm.exp
@@ -699,8 +699,30 @@ proc test_attrs {} {
 	    5 1
 	    25 0
 	}
+	fg {
+	    30 black
+	    31 red
+	    32 green
+	    33 yellow
+	    34 blue
+	    35 magenta
+	    36 cyan
+	    37 white
+	    39 default
+	}
+	bg {
+	    40 black
+	    41 red
+	    42 green
+	    43 yellow
+	    44 blue
+	    45 magenta
+	    46 cyan
+	    47 white
+	    49 default
+	}
     } {
-	setup_terminal 8 1
+	setup_terminal 12 1
 	set re ""
 	foreach { arg val } $vals {
 	    Term::_insert "a"
diff --git a/gdb/testsuite/lib/tuiterm.exp b/gdb/testsuite/lib/tuiterm.exp
index 90b885d7ab4..b7c877593b7 100644
--- a/gdb/testsuite/lib/tuiterm.exp
+++ b/gdb/testsuite/lib/tuiterm.exp
@@ -561,6 +561,37 @@ namespace eval Term {
 	}
     }
 
+    # Translate the color numbers as used in proc _csi_m to a name.
+    proc _color_attr { n } {
+	switch -exact -- $n {
+	    0 {
+		return black
+	    }
+	    1 {
+		return red
+	    }
+	    2 {
+		return green
+	    }
+	    3 {
+		return yellow
+	    }
+	    4 {
+		return blue
+	    }
+	    5 {
+		return magenta
+	    }
+	    6 {
+		return cyan
+	    }
+	    7 {
+		return white
+	    }
+	    default { error "unsupported color number: $n" }
+	}
+    }
+
     # Select Graphic Rendition.
     #
     # https://vt100.net/docs/vt510-rm/SGR.html
@@ -607,13 +638,13 @@ namespace eval Term {
 			set _attrs(invisible) 0
 		    }
 		    30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 {
-			set _attrs(fg) $item
+			set _attrs(fg) [_color_attr [expr $item - 30]]
 		    }
 		    39 {
 			set _attrs(fg) default
 		    }
 		    40 - 41 - 42 - 43 - 44 - 45 - 46 - 47 {
-			set _attrs(bg) $item
+			set _attrs(bg) [_color_attr [expr $item - 40]]
 		    }
 		    49 {
 			set _attrs(bg) default
-- 
2.35.3


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-05-26 13:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-26 13:02 [pushed 1/3] [gdb/testsuite] Fix reverse attribute in tuiterm Tom de Vries
2023-05-26 13:02 ` [pushed 2/3] [gdb/testsuite] Add invisible and blinking attributes " Tom de Vries
2023-05-26 13:03 ` [pushed 3/3] [gdb/testsuite] Add test-case gdb.tui/color-prompt.exp Tom de Vries

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).