From patchwork Sat May 4 16:17:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Philippe Waroquiers X-Patchwork-Id: 32547 Received: (qmail 114011 invoked by alias); 4 May 2019 16:18:12 -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 113890 invoked by uid 89); 4 May 2019 16:18:12 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.8 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: mailsec106.isp.belgacom.be Received: from mailsec106.isp.belgacom.be (HELO mailsec106.isp.belgacom.be) (195.238.20.102) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 04 May 2019 16:18:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skynet.be; i=@skynet.be; q=dns/txt; s=securemail; t=1556986690; x=1588522690; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=dVVUGPA6XeoXR4ZnE2TFanJX5NKS+qY3/R6/7o+T6Ts=; b=ms1u7CRcYqHMrEoy9RMNbVmrw6Gk8z51iRNtG/0xIUnhcFrcy0g1o3VD aUjq8nnAqkOpdk/MHm9s2bNyyXJISA==; Received: from 59.151-129-109.adsl-dyn.isp.belgacom.be (HELO md.home) ([109.129.151.59]) by relay.skynet.be with ESMTP/TLS/DHE-RSA-AES128-GCM-SHA256; 04 May 2019 18:17:59 +0200 From: Philippe Waroquiers To: gdb-patches@sourceware.org Cc: Philippe Waroquiers Subject: [RFAv3 5/6] Test the | (pipe) command. Date: Sat, 4 May 2019 18:17:52 +0200 Message-Id: <20190504161753.15530-6-philippe.waroquiers@skynet.be> In-Reply-To: <20190504161753.15530-1-philippe.waroquiers@skynet.be> References: <20190504161753.15530-1-philippe.waroquiers@skynet.be> MIME-Version: 1.0 X-IsSubscribed: yes gdb/testsuite/ChangeLog 2019-05-04 Philippe Waroquiers * gdb.base/shell.exp: Test pipe command, $_shell_exitcode, $_shell_exitsignal. * gdb.base/default.exp: Update for new convenience variables. Update default.exp --- gdb/testsuite/gdb.base/default.exp | 2 + gdb/testsuite/gdb.base/shell.exp | 68 +++++++++++++++++++++++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/gdb.base/default.exp b/gdb/testsuite/gdb.base/default.exp index 56ec917aa3..0325b8045d 100644 --- a/gdb/testsuite/gdb.base/default.exp +++ b/gdb/testsuite/gdb.base/default.exp @@ -606,6 +606,8 @@ set show_conv_list \ {$_isvoid = } \ {$_gdb_major = 8} \ {$_gdb_minor = 4} \ + {$_shell_exitsignal = void} \ + {$_shell_exitcode = 0} \ } if ![skip_python_tests] { append show_conv_list \ diff --git a/gdb/testsuite/gdb.base/shell.exp b/gdb/testsuite/gdb.base/shell.exp index 60d6e31e4f..9b85e4988b 100644 --- a/gdb/testsuite/gdb.base/shell.exp +++ b/gdb/testsuite/gdb.base/shell.exp @@ -13,7 +13,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# Test that the shell and ! commands work. +# Test that the shell and ! and | and pipe commands work. gdb_exit gdb_start @@ -22,3 +22,69 @@ gdb_test "shell echo foo" "foo" gdb_test "! echo foo" "foo" gdb_test "!echo foo" "foo" + +# Convenience variables with shell command. +gdb_test "! exit 0" "" +gdb_test "p \$_shell_exitcode" " = 0" "shell success exitcode" +gdb_test "p \$_shell_exitsignal" " = void" "shell success exitsignal" + +gdb_test "! exit 1" "" +gdb_test "p \$_shell_exitcode" " = 1" "shell fail exitcode" +gdb_test "p \$_shell_exitsignal" " = void" "shell fail exitsignal" + +gdb_test "! kill -2 $$" "" +gdb_test "p \$_shell_exitcode" " = void" "shell interrupt exitcode" +gdb_test "p \$_shell_exitsignal" " = 2" "shell interrupt exitsignal" + + +gdb_test "pipe help pipe | wc -l" "10" "check simple pipe" +gdb_test "pipe help pipe | grep Usage: | wc -l" "4" "check double pipe" + +gdb_test "| help pipe | grep Usage: | wc -l" "4" "check double pipe, pipe char" +gdb_test "|help pipe|grep Usage:|wc -l" "4" "no space around pipe char" + +gdb_test "echo coucou\\n" "coucou" "echo coucou" +gdb_test "||wc -l" "1" "Check repeat previous command" + +gdb_test "| -d ! echo this contains a | character\\n ! sed -e 's/|/PIPE/'" \ + "this contains a PIPE character" "verify alternate 1char sep" + +gdb_test "|-d ! echo this contains a | character\\n!sed -e 's/|/PIPE/'" \ + "this contains a PIPE character" "verify alternate 1char sep, no space" + +gdb_test "| -d !!! echo this contains a | character\\n !!! sed -e 's/|/PIPE/'" \ + "this contains a PIPE character" "verify alternate 3char sep" + +gdb_test "|-d !!! echo this contains a | character\\n!!!sed -e 's/|/PIPE/'" \ + "this contains a PIPE character" "verify alternate 3char sep, no space" + +# Convenience variables with pipe command. +gdb_test "|p 123| exit 0" "" +gdb_test "p \$_shell_exitcode" " = 0" "pipe success exitcode" +gdb_test "p \$_shell_exitsignal" " = void" "pipe success exitsignal" + +gdb_test "|p 123| exit 1" "" +gdb_test "p \$_shell_exitcode" " = 1" "pipe fail exitcode" +gdb_test "p \$_shell_exitsignal" " = void" "pipe fail exitsignal" + +gdb_test "|p 123| kill -2 $$" "" +gdb_test "p \$_shell_exitcode" " = void" "pipe interrupt exitcode" +gdb_test "p \$_shell_exitsignal" " = 2" "pipe interrupt exitsignal" + +# Error handling verifications. +gdb_test "|" "Missing COMMAND" "all missing" +gdb_test "|-d" "Missing separator SEP after -d" "-d value missing" +gdb_test "|-d " "Missing separator SEP after -d" "-d spaces value missing" +gdb_test "| echo coucou" \ + "Missing separator before SHELL_COMMAND" \ + "| separator missing" +gdb_test "|-d SEP echo coucou" \ + "Missing separator before SHELL_COMMAND" \ + "SEP separator missing" +gdb_test "|echo coucou|" \ + "Missing SHELL_COMMAND" \ + "SHELL_COMMAND missing" +gdb_test "|-d ! echo coucou !" \ + "Missing SHELL_COMMAND" \ + "SHELL_COMMAND missing" +