mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 17:18:55 +00:00
Test define-prefix.
Adds a test testing the new define-prefix command. 2019-11-30 Philippe Waroquiers <philippe.waroquiers@skynet.be> * gdb.base/define-prefix.exp: New file.
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
2019-11-30 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
||||
|
||||
* gdb.base/define-prefix.exp: New file.
|
||||
|
||||
2019-11-28 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||
|
||||
* lib/gdb.exp (skip_btrace_tests): Return 1 if the test fails to
|
||||
|
||||
164
gdb/testsuite/gdb.base/define-prefix.exp
Normal file
164
gdb/testsuite/gdb.base/define-prefix.exp
Normal file
@@ -0,0 +1,164 @@
|
||||
# This testcase is part of GDB, the GNU debugger.
|
||||
|
||||
# Copyright 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/>.
|
||||
|
||||
|
||||
# This test verifies the "define-prefix" command.
|
||||
|
||||
gdb_start
|
||||
|
||||
####################
|
||||
# Verify the definition of user defined prefix commands.
|
||||
# Test the definition of a command using these prefixes.
|
||||
|
||||
# Define an empty prefix command.
|
||||
gdb_test_no_output "define-prefix abc-prefix"
|
||||
|
||||
# Verify an empty prefix command cannot be used as a command.
|
||||
gdb_test "abc-prefix" \
|
||||
"\"abc-prefix\" must be followed by the name of a subcommand.*" \
|
||||
"execute prefix command not followed by subcommand"
|
||||
|
||||
# Define a sub-prefix command.
|
||||
gdb_test_no_output "define-prefix abc-prefix def-prefix"
|
||||
|
||||
# Define ghi-cmd using the prefixes.
|
||||
gdb_test_multiple "define abc-prefix def-prefix ghi-cmd" \
|
||||
"define user command: abc-prefix def-prefix ghi-cmd" {
|
||||
-re "Type commands for definition of \"abc-prefix def-prefix ghi-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
|
||||
gdb_test "echo command ghi-cmd\\n\nend" "" \
|
||||
"define user command: ghi-cmd"
|
||||
}
|
||||
}
|
||||
# Verify ghi-cmd works.
|
||||
gdb_test "abc-prefix def-prefix ghi-cmd" \
|
||||
"command ghi-cmd" \
|
||||
"use user command: ghi-cmd"
|
||||
|
||||
|
||||
####################
|
||||
# Verify an existing (empty) command can be marked as a prefix command.
|
||||
# Then verify an empty prefix command can be transformed into an executable command.
|
||||
|
||||
# Define ghi-prefix-cmd as an empty command.
|
||||
gdb_test_multiple "define abc-prefix def-prefix ghi-prefix-cmd" \
|
||||
"define user command: abc-prefix def-prefix ghi-prefix-cmd" {
|
||||
-re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
|
||||
gdb_test "end" "" \
|
||||
"define user command: ghi-prefix-cmd"
|
||||
}
|
||||
}
|
||||
gdb_test_no_output "define-prefix abc-prefix def-prefix ghi-prefix-cmd"
|
||||
|
||||
# Verify a sequence ending with an empty prefix command cannot be used as
|
||||
# a command.
|
||||
gdb_test "abc-prefix def-prefix ghi-prefix-cmd" \
|
||||
"\"abc-prefix def-prefix ghi-prefix-cmd\" must be followed by the name of a subcommand.*" \
|
||||
"execute sequence of prefix commands not followed by a subcommand"
|
||||
|
||||
# Define jkl-cmd command.
|
||||
gdb_test_multiple "define abc-prefix def-prefix ghi-prefix-cmd jkl-cmd" \
|
||||
"define user command: abc-prefix def-prefix ghi-prefix-cmd jkl-cmd" {
|
||||
-re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd jkl-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
|
||||
gdb_test "echo command jkl-cmd\\n\nend" "" \
|
||||
"define user command: jkl-cmd"
|
||||
}
|
||||
}
|
||||
# Verify jkl-cmd command works.
|
||||
gdb_test "abc-prefix def-prefix ghi-prefix-cmd jkl-cmd" \
|
||||
"command jkl-cmd" \
|
||||
"use user command: jkl-cmd"
|
||||
|
||||
# Define alternate-jkl-cmd and check it works.
|
||||
# Define alternate-jkl-cmd command.
|
||||
gdb_test_multiple "define abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd" \
|
||||
"define user command: abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd" {
|
||||
-re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
|
||||
gdb_test "echo command alternate-jkl-cmd\\n\nend" "" \
|
||||
"define user command: alternate-jkl-cmd"
|
||||
}
|
||||
}
|
||||
# Verify alternate-jkl-cmd command works.
|
||||
gdb_test "abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd" \
|
||||
"command alternate-jkl-cmd" \
|
||||
"use user command: alternate-jkl-cmd"
|
||||
|
||||
|
||||
|
||||
# Now define ghi-prefix-cmd as a real command, and check it is working.
|
||||
send_gdb "define abc-prefix def-prefix ghi-prefix-cmd\n"
|
||||
gdb_expect {
|
||||
-re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
|
||||
send_gdb "echo defined command ghi-prefix-cmd\\n\nend\n"
|
||||
gdb_expect {
|
||||
-re "$gdb_prompt $" {pass "define user command: ghi-prefix-cmd"}
|
||||
timeout {fail "(timeout) define user command: ghi-prefix-cmd"}
|
||||
}
|
||||
}
|
||||
timeout {fail "(timeout) define user command: ghi-prefix-cmd"}
|
||||
}
|
||||
|
||||
# Verify ghi-prefix-cmd command works.
|
||||
gdb_test "abc-prefix def-prefix ghi-prefix-cmd" \
|
||||
"defined command ghi-prefix-cmd" \
|
||||
"use defined user command: ghi-prefix-cmd"
|
||||
|
||||
# Now redefine ghi-prefix-cmd, and check it is working.
|
||||
send_gdb "define abc-prefix def-prefix ghi-prefix-cmd\n"
|
||||
gdb_expect {
|
||||
-re "Keeping subcommands of prefix command \"ghi-prefix-cmd\"\.\r\nRedefine command \"ghi-prefix-cmd\".*y or n. $" {
|
||||
send_gdb "y\n"
|
||||
gdb_expect {
|
||||
-re "Type commands for definition of \"abc-prefix def-prefix ghi-prefix-cmd\".\r\nEnd with a line saying just \"end\".\r\n>$" {
|
||||
send_gdb "echo redefined command ghi-prefix-cmd\\n\nend\n"
|
||||
gdb_expect {
|
||||
-re "$gdb_prompt $" {pass "redefine user command: ghi-prefix-cmd"}
|
||||
timeout {fail "(timeout) redefine user command: ghi-prefix-cmd"}
|
||||
}
|
||||
}
|
||||
timeout {fail "(timeout) redefine user command: ghi-prefix-cmd"}
|
||||
}
|
||||
}
|
||||
-re "$gdb_prompt $" {fail "redefine user command: ghi-prefix-cmd"}
|
||||
timeout {fail "(timeout) redefine user command: ghi-prefix-cmd"}
|
||||
}
|
||||
|
||||
# Verify redefined ghi-prefix-cmd command works.
|
||||
gdb_test "abc-prefix def-prefix ghi-prefix-cmd" \
|
||||
"redefined command ghi-prefix-cmd" \
|
||||
"use redefined user command: ghi-prefix-cmd"
|
||||
|
||||
# Check jkl-cmd still works.
|
||||
gdb_test "abc-prefix def-prefix ghi-prefix-cmd jkl-cmd" \
|
||||
"command jkl-cmd" \
|
||||
"use user command after redefining ghi-prefix-cmd: jkl-cmd"
|
||||
|
||||
# Check alternate-jkl-cmd still works.
|
||||
gdb_test "abc-prefix def-prefix ghi-prefix-cmd alternate-jkl-cmd" \
|
||||
"command alternate-jkl-cmd" \
|
||||
"use user command after redefining ghi-prefix-cmd: alternate-jkl-cmd"
|
||||
|
||||
####################
|
||||
# Check error behaviour.
|
||||
|
||||
gdb_test "define-prefix print" ".* is built-in.*"
|
||||
|
||||
gdb_test "define-prefix something-not-existing something-else" \
|
||||
"Undefined command: \"something-not-existing\".*"
|
||||
|
||||
gdb_test "define-prefix abc-prefix something-not-existing something-else" \
|
||||
"Undefined abc-prefix command: \"something-not-existing\".*"
|
||||
|
||||
Reference in New Issue
Block a user