# 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 . # 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" }