From patchwork Sun Sep 29 20:54:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philippe Waroquiers X-Patchwork-Id: 34716 Received: (qmail 98440 invoked by alias); 29 Sep 2019 20:54:44 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 98380 invoked by uid 89); 29 Sep 2019 20:54:44 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-22.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.1 spammy=HContent-Transfer-Encoding:8bit X-HELO: mailsec114.isp.belgacom.be Received: from mailsec114.isp.belgacom.be (HELO mailsec114.isp.belgacom.be) (195.238.20.110) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 29 Sep 2019 20:54:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skynet.be; i=@skynet.be; q=dns/txt; s=securemail; t=1569790480; x=1601326480; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=MZmbWKZkwENxIFOGa6YqrZfxKARHLwBQuHuMfyQa9MU=; b=NsYBb9TPqBmrSC65wUIK5Zi7Eac4mHZhwtJOKp3uAlTeHeCmD1tN2q2b jVC9fqwdHgHLtHU6x2c6cCPRrrv8rA==; Received: from 255.38-242-81.adsl-dyn.isp.belgacom.be (HELO md.home) ([81.242.38.255]) by relay.skynet.be with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256; 29 Sep 2019 22:54:32 +0200 From: Philippe Waroquiers To: gdb-patches@sourceware.org Cc: Philippe Waroquiers Subject: [RFA 2/4] Test prefix-define. Date: Sun, 29 Sep 2019 22:54:25 +0200 Message-Id: <20190929205427.1319-3-philippe.waroquiers@skynet.be> In-Reply-To: <20190929205427.1319-1-philippe.waroquiers@skynet.be> References: <20190929205427.1319-1-philippe.waroquiers@skynet.be> MIME-Version: 1.0 X-IsSubscribed: yes Adds a test testing the new prefix-define command. 2019-08-03 Philippe Waroquiers * gdb.base/prefix-define.exp: New file. --- gdb/testsuite/gdb.base/prefix-define.exp | 144 +++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 gdb/testsuite/gdb.base/prefix-define.exp diff --git a/gdb/testsuite/gdb.base/prefix-define.exp b/gdb/testsuite/gdb.base/prefix-define.exp new file mode 100644 index 0000000000..81719204b4 --- /dev/null +++ b/gdb/testsuite/gdb.base/prefix-define.exp @@ -0,0 +1,144 @@ +# 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 . + + +# This test verifies the "prefix-define" command. + +gdb_start + +# disable pagination +gdb_test_no_output "set height 0" "disable pagination" + +#################### +# 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 "prefix-define 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 an abc-prefix command.*" \ + "An empty user defined prefix command cannot be executed" + +# Define a sub-prefix command. +gdb_test_no_output "prefix-define 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 "prefix-define abc-prefix def-prefix ghi-prefix-cmd" + +# Verify 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 an ghi-prefix-cmd command.*" \ + "An empty user defined prefix command cannot be executed" + +# 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 redefine 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 "Redefine 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 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 "prefix-define print" ".* is built-in.*" +