Update tests following changes to "help" and "apropos"
Factorizes the testing of the help output, by having a single place that defines the common help trailer and/or prefix messages.
This commit is contained in:
parent
66d8c86285
commit
206584bdf1
@ -1,3 +1,18 @@
|
||||
2019-06-03 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
||||
|
||||
* lib/gdb.exp (help_list_trailer): New regexp variable
|
||||
factorizing the help trailer message.
|
||||
(test_class_help): Use help_list_trailer. Add LIST_OF_COMMANDS
|
||||
arg to allow to better factorize various tests.
|
||||
(test_user_defined_class_help): Factorizes testing 'help user-defined'.
|
||||
(test_prefix_command_help): Use help_list_trailer.
|
||||
* gdb.python/py-cmd.exp: Use test_user_defined_class_help.
|
||||
* gdb.guile/scm-cmd.exp: Likewise.
|
||||
* gdb.trace/tracecmd.exp: Update caller of test_class_help.
|
||||
* gdb.base/help.exp: Use test_user_defined_class_help.
|
||||
* gdb.base/style.exp: Add tests for styling of help and apropos.
|
||||
* lib/gdb-utils.exp (style): Add title and highlight styles.
|
||||
|
||||
2019-05-31 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
||||
|
||||
* gdb.base/shell.exp: Test pipe command, $_shell_exitcode,
|
||||
|
||||
@ -51,11 +51,8 @@ test_class_help "support" {"Support facilities\.\[\r\n\]+"}
|
||||
test_class_help "tracepoints" {
|
||||
"Tracing of program execution without stopping the program\.\[\r\n\]+"
|
||||
}
|
||||
test_class_help "user-defined" {
|
||||
"User-defined commands\.\[\r\n\]+"
|
||||
"The commands in this class are those defined by the user\.\[\r\n\]+"
|
||||
"Use the \"define\" command to define a command\.\[\r\n\]+"
|
||||
}
|
||||
|
||||
test_user_defined_class_help
|
||||
|
||||
# Test help of an abbreviated command. "break" is picked at random.
|
||||
set help_breakpoint_text "Set breakpoint at specified location\..*"
|
||||
|
||||
@ -90,6 +90,39 @@ save_vars { env(TERM) } {
|
||||
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} -- 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} --.*" \
|
||||
"Usage:.*" \
|
||||
"short${cut_for_thre_expr}ad apply.*" \
|
||||
"" \
|
||||
"${tfaas_expr} --.*" \
|
||||
"Usage:.*" \
|
||||
"short${cut_for_thre_expr}ad apply.*" \
|
||||
] \
|
||||
"apropos -v cut for 'thre"
|
||||
|
||||
set quoted [string_to_regexp $binfile]
|
||||
gdb_test "file $binfile" \
|
||||
"Reading symbols from [style $quoted file]..." \
|
||||
|
||||
@ -130,9 +130,7 @@ gdb_test "test-help ugh" "test-cmd output, arg = ugh" \
|
||||
"call simple user-defined command"
|
||||
|
||||
# Make sure the command shows up in `help user-defined`.
|
||||
gdb_test "help user-defined" \
|
||||
"User-defined commands.\[\r\n\]+The commands in this class are those defined by the user.\[\r\n\]+Use the \"define\" command to define a command.\[\r\n\]+List of commands:\[\r\n\]+test-help -- Docstring\[\r\n\]+Type \"help\" followed by command name for full documentation.\[\r\n\]+Type \"apropos word\" to search for commands related to \"word\".\[\r\n\]+Command name abbreviations are allowed if unambiguous.\[\r\n\]+" \
|
||||
"see user-defined command in `help user-defined`"
|
||||
test_user_defined_class_help {"test-help -- Docstring[\r\n]"}
|
||||
|
||||
# Make sure the command does not show up in `show user`.
|
||||
gdb_test "show user test-help" "Not a user command\." \
|
||||
|
||||
@ -159,7 +159,7 @@ gdb_py_test_multiple "input simple user-defined command" \
|
||||
gdb_test "test_help ugh" "test_cmd output, arg = ugh" "call simple user-defined command"
|
||||
|
||||
# Make sure the command shows up in `help user-defined`.
|
||||
gdb_test "help user-defined" "User-defined commands.\[\r\n\]+The commands in this class are those defined by the user.\[\r\n\]+Use the \"define\" command to define a command.\[\r\n\]+\[\r\n\]+List of commands:\[\r\n\]+\[\r\n\]+test_help -- Docstring\[\r\n\]+\[\r\n\]+Type \"help\" followed by command name for full documentation.\[\r\n\]+Type \"apropos word\" to search for commands related to \"word\".\[\r\n\]+Command name abbreviations are allowed if unambiguous.\[\r\n\]+" "see user-defined command in `help user-defined`"
|
||||
test_user_defined_class_help {"test_help -- Docstring[\r\n]"}
|
||||
|
||||
# Make sure the command does not show up in `show user`.
|
||||
gdb_test "show user test_help" "Not a user command\." \
|
||||
|
||||
@ -55,7 +55,7 @@ set testline2 [expr $baseline + 3]
|
||||
set helpcnt 0
|
||||
test_class_help "tracepoints" {
|
||||
"Tracing of program execution without stopping the program\.[\r\n\]+"
|
||||
} "1.0: help tracepoints"
|
||||
} {} "1.0: help tracepoints"
|
||||
|
||||
#
|
||||
# test trace command:
|
||||
|
||||
@ -48,8 +48,10 @@ proc string_to_regexp {str} {
|
||||
|
||||
proc style {str style} {
|
||||
switch -exact -- $style {
|
||||
title { set style 1 }
|
||||
file { set style 32 }
|
||||
function { set style 33 }
|
||||
highlight { set style 31 }
|
||||
variable { set style 36 }
|
||||
address { set style 34 }
|
||||
}
|
||||
|
||||
@ -5550,35 +5550,64 @@ proc gdb_gnu_strip_debug { dest args } {
|
||||
# Test the output of GDB_COMMAND matches the pattern obtained
|
||||
# by concatenating all elements of EXPECTED_LINES. This makes
|
||||
# it possible to split otherwise very long string into pieces.
|
||||
# If third argument is not empty, it's used as the name of the
|
||||
# If third argument TESTNAME is not empty, it's used as the name of the
|
||||
# test to be printed on pass/fail.
|
||||
proc help_test_raw { gdb_command expected_lines args } {
|
||||
set message $gdb_command
|
||||
if [llength $args]>0 then {
|
||||
set message [lindex $args 0]
|
||||
}
|
||||
proc help_test_raw { gdb_command expected_lines {testname {}} } {
|
||||
if {$testname == {}} {
|
||||
set message $gdb_command
|
||||
} else {
|
||||
set message $testname
|
||||
}
|
||||
set expected_output [join $expected_lines ""]
|
||||
gdb_test "${gdb_command}" "${expected_output}" $message
|
||||
}
|
||||
|
||||
# Test the output of "help COMMAND_CLASS". EXPECTED_INITIAL_LINES
|
||||
# A regexp that matches the end of help CLASS|PREFIX_COMMAND
|
||||
set help_list_trailer {
|
||||
"Type \"apropos word\" to search for commands related to \"word\"\.[\r\n]+"
|
||||
"Type \"apropos -v word\" for full documentation of commands related to \"word\"\.[\r\n]+"
|
||||
"Command name abbreviations are allowed if unambiguous\."
|
||||
}
|
||||
|
||||
# Test the output of "help COMMAND_CLASS". EXPECTED_INITIAL_LINES
|
||||
# are regular expressions that should match the beginning of output,
|
||||
# before the list of commands in that class. The presence of
|
||||
# command list and standard epilogue will be tested automatically.
|
||||
# before the list of commands in that class.
|
||||
# LIST_OF_COMMANDS are regular expressions that should match the
|
||||
# list of commands in that class. If empty, the command list will be
|
||||
# matched automatically. The presence of standard epilogue will be tested
|
||||
# automatically.
|
||||
# If last argument TESTNAME is not empty, it's used as the name of the
|
||||
# test to be printed on pass/fail.
|
||||
# Notice that the '[' and ']' characters don't need to be escaped for strings
|
||||
# wrapped in {} braces.
|
||||
proc test_class_help { command_class expected_initial_lines args } {
|
||||
set l_stock_body {
|
||||
"List of commands\:.*[\r\n]+"
|
||||
"Type \"help\" followed by command name for full documentation\.[\r\n]+"
|
||||
"Type \"apropos word\" to search for commands related to \"word\"\.[\r\n]+"
|
||||
"Command name abbreviations are allowed if unambiguous\."
|
||||
proc test_class_help { command_class expected_initial_lines {list_of_commands {}} {testname {}} } {
|
||||
global help_list_trailer
|
||||
if {[llength $list_of_commands]>0} {
|
||||
set l_list_of_commands {"List of commands:[\r\n]+[\r\n]+"}
|
||||
set l_list_of_commands [concat $l_list_of_commands $list_of_commands]
|
||||
set l_list_of_commands [concat $l_list_of_commands {"[\r\n]+[\r\n]+"}]
|
||||
} else {
|
||||
set l_list_of_commands {"List of commands\:.*[\r\n]+"}
|
||||
}
|
||||
set l_entire_body [concat $expected_initial_lines $l_stock_body]
|
||||
set l_stock_body {
|
||||
"Type \"help\" followed by command name for full documentation\.[\r\n]+"
|
||||
}
|
||||
set l_entire_body [concat $expected_initial_lines $l_list_of_commands \
|
||||
$l_stock_body $help_list_trailer]
|
||||
|
||||
eval [list help_test_raw "help ${command_class}" $l_entire_body] $args
|
||||
help_test_raw "help ${command_class}" $l_entire_body $testname
|
||||
}
|
||||
|
||||
# Like test_class_help but specialised to test "help user-defined".
|
||||
proc test_user_defined_class_help { {list_of_commands {}} {testname {}} } {
|
||||
test_class_help "user-defined" {
|
||||
"User-defined commands\.[\r\n]+"
|
||||
"The commands in this class are those defined by the user\.[\r\n]+"
|
||||
"Use the \"define\" command to define a command\.[\r\n]+"
|
||||
} $list_of_commands $testname
|
||||
}
|
||||
|
||||
|
||||
# COMMAND_LIST should have either one element -- command to test, or
|
||||
# two elements -- abbreviated command to test, and full command the first
|
||||
# element is abbreviation of.
|
||||
@ -5587,6 +5616,7 @@ proc test_class_help { command_class expected_initial_lines args } {
|
||||
# before the list of subcommands. The presence of
|
||||
# subcommand list and standard epilogue will be tested automatically.
|
||||
proc test_prefix_command_help { command_list expected_initial_lines args } {
|
||||
global help_list_trailer
|
||||
set command [lindex $command_list 0]
|
||||
if {[llength $command_list]>1} {
|
||||
set full_command [lindex $command_list 1]
|
||||
@ -5597,10 +5627,8 @@ proc test_prefix_command_help { command_list expected_initial_lines args } {
|
||||
# be expanded in this list.
|
||||
set l_stock_body [list\
|
||||
"List of $full_command subcommands\:.*\[\r\n\]+"\
|
||||
"Type \"help $full_command\" followed by $full_command subcommand name for full documentation\.\[\r\n\]+"\
|
||||
"Type \"apropos word\" to search for commands related to \"word\"\.\[\r\n\]+"\
|
||||
"Command name abbreviations are allowed if unambiguous\."]
|
||||
set l_entire_body [concat $expected_initial_lines $l_stock_body]
|
||||
"Type \"help $full_command\" followed by $full_command subcommand name for full documentation\.\[\r\n\]+"]
|
||||
set l_entire_body [concat $expected_initial_lines $l_stock_body $help_list_trailer]
|
||||
if {[llength $args]>0} {
|
||||
help_test_raw "help ${command}" $l_entire_body [lindex $args 0]
|
||||
} else {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user