public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [patch] gdb/testsuite: Fix POSIX-isms in gdb.base/shell.exp
@ 2020-06-25  1:35 Sandra Loosemore
  2020-06-25 17:32 ` Christian Biesinger
  2020-07-15 19:53 ` [ping] " Sandra Loosemore
  0 siblings, 2 replies; 11+ messages in thread
From: Sandra Loosemore @ 2020-06-25  1:35 UTC (permalink / raw)
  To: gdb-patches

[-- Attachment #1: Type: text/plain, Size: 741 bytes --]

This patch fixes a group of failures in gdb.base/shell.exp on Windows 
host due to assumptions that GDB is launching a POSIX-like shell.  On 
Windows, we get CMD.EXE instead.

There is a potential second group of failures on Windows host not 
addressed by this patch, due to the dependence of some of these tests on 
utilities like wc, sed, and grep.  These tests happen to work for me 
because the test harness connects to the remote host using Cygwin ssh 
and both GDB and CMD.EXE inherit the PATH setting from the parent Cygwin 
shell.  I don't know if disabling those tests on Windows host too is 
appropriate, or again if this is an instance of badly-designed tests 
that could be rewritten to avoid those dependencies.  WDYT?

-Sandra

[-- Attachment #2: windows-shell.patch --]
[-- Type: text/x-patch, Size: 4194 bytes --]

commit 6d3377fd7e040e1c6001af12f8d8b2dfa8b7b0c6
Author: Sandra Loosemore <sandra@codesourcery.com>
Date:   Wed Jun 24 17:32:16 2020 -0700

    Fix POSIX-isms in gdb.base/shell.exp
    
    Some recent tests added to gdb.base/shell.exp have been failing on
    Windows host due to assumptions that the shell is a POSIX variant.  On
    Windows, GDB uses CMD.EXE via the system() call to run shell commands
    instead.
    
    There seems to be no obvious CMD.EXE equivalent for "kill -2 $$" to
    signal the shell process, so this patch skips those tests on Windows
    host.  The second problem addressed here is that CMD.EXE only
    recognizes double quotes, not single quotes; that change can be made
    unconditionally since POSIX shells recognize double quotes as well.
    
    2020-06-24  Sandra Loosemore  <sandra@codesourcery.com>
    
    	* gdb.base/shell.exp: Skip pipe tests dependent on sh on Windows host.
    	Use double quotes instead of single quotes.

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 1b77459..aebfe8d 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-06-24  Sandra Loosemore  <sandra@codesourcery.com>
+
+	* gdb.base/shell.exp: Skip pipe tests dependent on sh on Windows host.
+	Use double quotes instead of single quotes.
+
 2020-06-24  Pedro Alves  <palves@redhat.com>
 
 	* gdb.arch/amd64-entry-value-paramref.exp: Use
diff --git a/gdb/testsuite/gdb.base/shell.exp b/gdb/testsuite/gdb.base/shell.exp
index f656077..ad36f6b 100644
--- a/gdb/testsuite/gdb.base/shell.exp
+++ b/gdb/testsuite/gdb.base/shell.exp
@@ -34,9 +34,12 @@ gdb_test_no_output "! exit 1"
 gdb_test "p \$_shell_exitcode" " = 1" "shell fail exitcode"
 gdb_test "p \$_shell_exitsignal" " = void" "shell fail exitsignal"
 
-gdb_test_no_output "! kill -2 $$"
-gdb_test "p \$_shell_exitcode" " = void" "shell interrupt exitcode"
-gdb_test "p \$_shell_exitsignal" " = 2" "shell interrupt exitsignal"
+# This test will not work when the shell is CMD.EXE.
+if { ! [ishost *-*-mingw*] } {
+    gdb_test_no_output "! kill -2 $$"
+    gdb_test "p \$_shell_exitcode" " = void" "shell interrupt exitcode"
+    gdb_test "p \$_shell_exitsignal" " = 2" "shell interrupt exitsignal"
+}
 
 # Define the user command "foo", used to test "pipe" command.
 gdb_test_multiple "define foo" "define foo" {
@@ -67,16 +70,16 @@ gdb_test "|foo|grep truc|wc -l" "1" "no space around pipe char"
 gdb_test "echo coucou\\n" "coucou" "echo coucou"
 gdb_test "||wc -l" "1" "repeat previous command"
 
-gdb_test "| -d ! echo this contains a | character\\n ! sed -e 's/|/PIPE/'" \
+gdb_test "| -d ! echo this contains a | character\\n ! sed -e \"s/|/PIPE/\"" \
     "this contains a PIPE character" "alternate 1char delim"
 
-gdb_test "|-d ! echo this contains a | character\\n!sed -e 's/|/PIPE/'" \
+gdb_test "|-d ! echo this contains a | character\\n!sed -e \"s/|/PIPE/\"" \
     "this contains a PIPE character" "alternate 1char delim, no space"
 
-gdb_test "| -d !!! echo this contains a | character\\n !!! sed -e 's/|/PIPE/'" \
+gdb_test "| -d !!! echo this contains a | character\\n !!! sed -e \"s/|/PIPE/\"" \
     "this contains a PIPE character" "alternate 3char delim"
 
-gdb_test "|-d !!! echo this contains a | character\\n!!!sed -e 's/|/PIPE/'" \
+gdb_test "|-d !!! echo this contains a | character\\n!!!sed -e \"s/|/PIPE/\"" \
     "this contains a PIPE character" "alternate 3char delim, no space"
 
 # Convenience variables with pipe command.
@@ -88,9 +91,12 @@ 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"
+# This test will not work when the shell is CMD.EXE.
+if { ! [ishost *-*-mingw*] } {
+    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"

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-07-16 16:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-25  1:35 [patch] gdb/testsuite: Fix POSIX-isms in gdb.base/shell.exp Sandra Loosemore
2020-06-25 17:32 ` Christian Biesinger
2020-06-25 17:57   ` Sandra Loosemore
2020-06-25 18:07     ` Eli Zaretskii
2020-06-25 19:35       ` Sandra Loosemore
2020-06-26  7:08         ` Eli Zaretskii
2020-06-26 22:22           ` Sandra Loosemore
2020-06-25 22:36     ` Christian Biesinger
2020-07-15 19:53 ` [ping] " Sandra Loosemore
2020-07-16  2:41   ` Simon Marchi
2020-07-16 16:44     ` Eli Zaretskii

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).