Add tests for new alias default-args related commands and arguments.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / style.exp
index 8bababccf846fb0f9bf83b96852f20f2634dd711..bfd26144fa4e66d53b3dde96efcdd5aa32e6525e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2018 Free Software Foundation, Inc.
+# Copyright 2018-2020 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
@@ -21,37 +21,152 @@ save_vars { env(TERM) } {
     # We need an ANSI-capable terminal to get the output.
     setenv TERM ansi
 
-    if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
+    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
     }
 
+    set readnow [readnow]
+
     if {![runto_main]} {
        fail "style tests failed"
        return
     }
 
+    # Check that the source highlighter has not stripped away the leading
+    # newlines.
+    set main_line [gdb_get_line_number "break here"]
+    gdb_test "list $main_line,$main_line" "return.*some_called_function.*"
+
     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 main_expr [style main function]
+    set base_file_expr [style ".*style\\.c" file]
     set file_expr "$base_file_expr:\[0-9\]"
-    set arg_expr "\033\\\[36marg.\033\\\[m"
+    set arg_expr [style "arg." variable]
 
     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" " = .* <$main_expr>"
+    gdb_test "print &main" " = .* [style $hex address] <$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} {
+       set macro_line [gdb_get_line_number "\#define SOME_MACRO"]
+       gdb_test "info macro SOME_MACRO" \
+           "Defined at $base_file_expr:$macro_line\r\n#define SOME_MACRO 23"
+    }
+
+    set func [style some_called_function function]
+    # Somewhere should see the call to the function.
+    gdb_test "disassemble main" "[style $hex address].*$func.*"
+
+    set ifield [style int_field variable]
+    set sfield [style string_field variable]
+    set efield [style e_field variable]
+    set evalue [style VALUE_TWO variable]
+    gdb_test "print struct_value" \
+       "\{$ifield = 23,.*$sfield = .*,.*$efield = $evalue.*"
 
     gdb_exit
     gdb_spawn
 
-    gdb_test "" "\033\\\[35;1mGNU gdb.*\033\\\[m.*" \
+    set vers [style "GNU gdb.*" "35;1"]
+    gdb_test "" "${vers}.*" \
        "version is styled"
 
+    set address_style_expr [style ".*\".*address.*\".*style.*" address]
+    gdb_test "show style address foreground" \
+       "The ${address_style_expr} foreground color is: blue" \
+       "style name and style word styled using its own style in show style"
+
+    set aliases_expr [style ".*aliases.*" title]
+    set breakpoints_expr [style ".*breakpoints.*" title]
+    gdb_test "help" \
+       [multi_line \
+            "List of classes of commands:" \
+            "" \
+            "${aliases_expr} -- User-defined aliases of other commands\." \
+            "${breakpoints_expr} -- Making program stop at certain points\." \
+            ".*" \
+           ] \
+       "help classes of commands styled with title"
+
+    set taas_expr  [style ".*taas.*" title]
+    set tfaas_expr  [style ".*tfaas.*" title]
+    set cut_for_thre_expr [style "cut for 'thre" highlight]
+    gdb_test "apropos -v cut for 'thre" \
+       [multi_line \
+            "" \
+            "${taas_expr}" \
+            "Apply a command to all .*" \
+            "Usage:.*" \
+            "short${cut_for_thre_expr}ad apply.*" \
+            "" \
+            "${tfaas_expr}" \
+            "Apply a command to all .*" \
+            "Usage:.*" \
+            "short${cut_for_thre_expr}ad apply.*" \
+           ]
+
     set quoted [string_to_regexp $binfile]
+    set pass_re "Reading symbols from [style $quoted file]\.\.\."
+    if { $readnow } {
+       set pass_re \
+           [multi_line \
+                $pass_re \
+                "Expanding full symbols from [style $quoted file]\.\.\."]
+    }
     gdb_test "file $binfile" \
-       "Reading symbols from \033\\\[32m${quoted}\033\\\[m..." \
+       $pass_re \
+       "filename is styled when loading symbol file"
+
+    gdb_test "pwd" "Working directory [style .*? file].*"
+
+    gdb_test_no_output "set print repeat 3"
+    gdb_test "print {0,0,0,0,0,0,0,0}" \
+       " = \\{0 [style {<repeats.*8.*times>} metadata]\\}"
+
+    gdb_test "show logging file" \
+       "The current logfile is \"[style .*? file]\"\\..*"
+
+    # Check warnings are styled by setting a rubbish data directory.
+    gdb_test "set data-directory Makefile" \
+       "warning: [style .*? file] is not a directory\\..*"
+    gdb_test "show data-directory" \
+       "GDB's data directory is \"[style .*? file]\"\\..*"
 }
This page took 0.026715 seconds and 4 git commands to generate.