blob: 9aac552fe1a76c443d4f10e73b0e446c44de8614 [file] [log] [blame]
# Copyright (C) 2026 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/>.
# This file is part of the GDB testsuite. It tests styled output from
# Python via raw ANSI escape sequences.
load_lib gdb-python.exp
require allow_python_tests
require {!is_remote host}
# Start with a fresh GDB, but enable color support.
with_ansi_styling_terminal {
clean_restart
}
# Create two variables in the parent scope called ${NAME} and
# ${NAME}_re. The variable ${NAME} will be the string for the ANSI
# escape sequence containing VALUE, and ${NAME}_re will be the regular
# expression to match that same sequence.
proc setup_ansi { name value } {
upvar 1 $name var
upvar 1 ${name}_re var_re
set var "\\033\[${value}m"
set var_re "\033\\\[${value}m"
}
# Different colors.
setup_ansi red 31
setup_ansi green 32
setup_ansi blue 34
# Different intensities.
setup_ansi normal 22
setup_ansi bold 1
setup_ansi dim 2
# Italic.
setup_ansi italic 3
setup_ansi no_italic 23
# Underline.
setup_ansi underline 4
setup_ansi no_underline 24
# Restore all settings to default.
setup_ansi default 0
gdb_test_no_output "python flag=\"OUTPUT=\""
gdb_test "python print('%s${blue}blue ${bold}blue+bold ${green}green+bold ${normal}green ${red}red${default}' % (flag))" \
"OUTPUT=${blue_re}blue ${bold_re}blue\\+bold ${green_re}green\\+bold ${normal_re}green ${red_re}red${default_re}" \
"foreground colors and bold"
gdb_test "python print('%snormal ${italic}italic ${underline}italic+underline ${no_underline}italic ${no_italic}normal' % (flag))" \
"OUTPUT=normal ${italic_re}italic ${underline_re}italic\\+underline ${no_underline_re}italic ${no_italic_re}normal" \
"italic and underline"