binutils-gdb/gdb/testsuite/gdb.base/style.exp
Tom Tromey d085f98901 Add the "set style source" command
This adds "set style source" (and "show style source") commands.  This
gives the user control over whether source code is highlighted.

gdb/ChangeLog
2019-03-14  Tom Tromey  <tromey@adacore.com>

	* NEWS: Add item for "style sources" commands.
	* source-cache.c (source_cache::get_source_lines): Check
	source_styling.
	* cli/cli-style.c (source_styling): New global.
	(_initialize_cli_style): Add "style sources" commands.
	(show_style_sources): New function.
	* cli/cli-style.h (source_styling): Declare.

gdb/doc/ChangeLog
2019-03-14  Tom Tromey  <tromey@adacore.com>

	* gdb.texinfo (Output Styling): Document "set style source" and
	"show style source".

gdb/testsuite/ChangeLog
2019-03-14  Tom Tromey  <tromey@adacore.com>

	* gdb.base/style.exp: Add "set style sources" test.
2019-03-14 05:47:11 -06:00

97 lines
2.9 KiB
Plaintext

# Copyright 2018-2019 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/>.
# Test CLI output styling.
standard_testfile
save_vars { env(TERM) } {
# We need an ANSI-capable terminal to get the output.
setenv TERM ansi
set test_macros 0
set options debug
get_compiler_info
if { [test_compiler_info "gcc-*"] || [test_compiler_info "clang-*"] } {
lappend options additional_flags=-g3
set test_macros 1
}
if {[prepare_for_testing "failed to prepare" $testfile $srcfile \
$options]} {
return -1
}
if {![runto_main]} {
fail "style tests failed"
return
}
gdb_test_no_output "set style enabled on"
set main_expr "\033\\\[33mmain\033\\\[m"
set base_file_expr "\033\\\[32m.*style\\.c\033\\\[m"
set file_expr "$base_file_expr:\[0-9\]"
set arg_expr "\033\\\[36marg.\033\\\[m"
gdb_test "frame" \
"$main_expr.*$arg_expr.*$arg_expr.*$file_expr.*"
gdb_test "info breakpoints" "$main_expr at $file_expr.*"
gdb_test_no_output "set style sources off"
gdb_test "frame" \
"\r\n\[^\033\]*break here.*" \
"frame without styling"
gdb_test_no_output "set style sources on"
gdb_test "break main" "file $base_file_expr.*"
gdb_test "print &main" " = .* \033\\\[34m$hex\033\\\[m <$main_expr>"
# Regression test for a bug where line-wrapping would occur at the
# wrong spot with styling. There were different bugs at different
# widths, so try two.
foreach width {20 30} {
gdb_test_no_output "set width $width"
# There was also a bug where the styling could be wrong in the
# line listing; this is why the words from the source code are
# spelled out in the final result line of the test.
gdb_test "frame" \
[multi_line \
"#0 *$main_expr.*$arg_expr.*" \
".*$arg_expr.*" \
".* at .*$file_expr.*" \
"\[0-9\]+.*return.* break here .*"
] \
"frame when width=$width"
}
if {$test_macros} {
gdb_test "info macro SOME_MACRO" \
"Defined at $base_file_expr:16\r\n#define SOME_MACRO 23"
}
gdb_exit
gdb_spawn
gdb_test "" "\033\\\[35;1mGNU gdb.*\033\\\[m.*" \
"version is styled"
set quoted [string_to_regexp $binfile]
gdb_test "file $binfile" \
"Reading symbols from \033\\\[32m${quoted}\033\\\[m..." \
"filename is styled when loading symbol file"
}