diff options
author | Philippe Waroquiers <philippe.waroquiers@skynet.be> | 2019-09-08 19:22:35 +0200 |
---|---|---|
committer | Philippe Waroquiers <philippe.waroquiers@skynet.be> | 2019-11-30 09:36:56 +0100 |
commit | 643c0cbedb4647702778ca8788a54053d1259d3b (patch) | |
tree | 8e971b432440e91260a5fc8830ceb8a9e363352e /gdb/testsuite | |
parent | c6ac7fc98718d7e472e1e1c12aae9855c79353a5 (diff) | |
download | gdb-643c0cbedb4647702778ca8788a54053d1259d3b.zip gdb-643c0cbedb4647702778ca8788a54053d1259d3b.tar.gz gdb-643c0cbedb4647702778ca8788a54053d1259d3b.tar.bz2 |
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.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/define-prefix.exp | 164 |
2 files changed, 168 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6b520e1..a88c545 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -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 diff --git a/gdb/testsuite/gdb.base/define-prefix.exp b/gdb/testsuite/gdb.base/define-prefix.exp new file mode 100644 index 0000000..b04c595 --- /dev/null +++ b/gdb/testsuite/gdb.base/define-prefix.exp @@ -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\".*" + |