binutils-gdb/gdb/testsuite/gdb.base/alias.exp
Andrew Burgess 65a33d75c2 gdb/testsuite: remove use of then keyword from gdb.base/*.exp
The canonical form of 'if' in modern TCL is 'if {} {}'.  But there's
still a bunch of places in the testsuite where we make use of the
'then' keyword, and sometimes these get copies into new tests, which
just spreads poor practice.

This commit removes all use of the 'then' keyword from the gdb.base/
test script directory.

There should be no changes in what is tested after this commit.
2022-11-28 21:04:09 +00:00

128 lines
4.7 KiB
Plaintext

# Test the alias command.
# Copyright 2011-2022 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/>.
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
# Helper to test the -a option to alias.
# Aliases that are abbreviations of commands (e.g. r -> run)
# do not appear in help output.
proc test_abbrev_not_present { alias_name } {
global gdb_prompt
set alias_present 0
set test_name "abbrev $alias_name not present in help command list"
gdb_test_multiple "help aliases" $test_name {
-re "\[\r\n\]$alias_name \[^\r\n\]*" {
set alias_present 1
exp_continue
}
-re ".*$gdb_prompt $" {
if {!$alias_present} {
pass $test_name
} else {
fail $test_name
}
}
}
}
proc test_abbrev_alias { name gdb_command test_value } {
gdb_test_no_output $gdb_command
gdb_test_no_output "$name print elements $test_value"
gdb_test "show print elements" "Limit .* is $test_value\[.\]" "verify $name"
test_abbrev_not_present $name
}
test_abbrev_alias set2 "alias -a set2=set" 42
test_abbrev_alias set3 "alias -a set3= set" 43
test_abbrev_alias set4 "alias -a set4 =set" 44
test_abbrev_alias set5 "alias -a set5 = set" 45
test_abbrev_alias set6 "alias -a -- set6 = set" 46
test_abbrev_alias -a "alias -a -- -a = set" 47
gdb_test "alias set2=set" "already exists: set2"
gdb_test "alias foo=bar" "Undefined command: \"bar\". Try \"help\"."
gdb_test_no_output "alias spe = set p elem"
gdb_test_no_output "spe 50"
gdb_test "show print elements" "Limit .* is 50\[.\]" "verify spe"
gdb_test_no_output "alias set pr elms = set p elem"
gdb_test_no_output "set pr elms 51"
gdb_test "show print elements" "Limit .* is 51\[.\]" "verify set pr elms"
gdb_test "help set print" "set print elements, set print elms, spe .*"
# Verify alias command detects a non existing prefix.
gdb_test "alias assigne imprime limite-elements = set print elements" \
"ALIAS and COMMAND prefixes do not match\." \
"assigne imprime prefix not defined"
gdb_test "alias set imprime limite-elements = set print elements" \
"ALIAS and COMMAND prefixes do not match\." \
"set imprime prefix not defined"
# Verify alias command detects a non matching prefix.
gdb_test "alias set ada limite-elements = set print elements" \
"ALIAS and COMMAND prefixes do not match\." \
"mismatched prefix"
# Verify alias command detects a non matching prefix due to length.
gdb_test "alias set imprime-limite-elements = set print elements" \
"Mismatched command length between ALIAS and COMMAND\." \
"mismatched length"
# Gradually define the prefixes and the limite-elements command.
gdb_test_no_output "alias assigne = set" "alias assigne"
gdb_test_no_output "alias assigne imprime = set print" "alias assigne imprime"
gdb_test_no_output "alias assigne imprime limite-elements = set print elements" \
"alias assigne imprime limite-elements"
# Define an alias using the command prefix with a command using an alias prefix.
gdb_test_no_output "alias set print max-elements = assigne imprime elements" \
"alias set print max-elements using assigne imprime"
# Tests the resulting prefixes and commands.
gdb_test_no_output "assigne print elements 52"
gdb_test "show print elements" "Limit .* is 52\[.\]" "verify 52"
gdb_test_no_output "assigne imprime elements 53"
gdb_test "show print elements" "Limit .* is 53\[.\]" "verify 53"
gdb_test_no_output "assigne imprime limite-elements 54"
gdb_test "show print elements" "Limit .* is 54\[.\]" "verify 54"
gdb_test_no_output "set imprime elements 55"
gdb_test "show print elements" "Limit .* is 55\[.\]" "verify 55"
gdb_test_no_output "set print limite-elements 56"
gdb_test "show print elements" "Limit .* is 56\[.\]" "verify 56"
gdb_test_no_output "set print max-elements 57"
gdb_test "show print elements" "Limit .* is 57\[.\]" "verify 57"
# Test aliases having a common prefix.
gdb_test_no_output "alias abcd = backtrace"
gdb_test_no_output "alias abcde = backtrace"
gdb_test_no_output "alias fghij = backtrace"
gdb_test_no_output "alias fghi = backtrace"
# Verify help aliases shows the user defined aliases
gdb_test "help aliases" ".*abcd --.*.*abcde --.*"