[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#33817: PATCH: fix bug #33817
From: |
Jacob Bachmeyer |
Subject: |
bug#33817: PATCH: fix bug #33817 |
Date: |
Fri, 21 Dec 2018 00:20:19 -0600 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.22) Gecko/20090807 MultiZilla/1.8.3.4e SeaMonkey/1.1.17 Mnenhy/0.7.6.0 |
This patch fixes the problem, without reintroducing the "shift empty
argument list" issue. This was discovered while working on
"dejagnu-report-card".
----
ChangeLog entry:
* dejagnu: Improve command parsing to fix bug #33817. Previously,
the documented equivalence between "multi word command" and
"multi-word-command" did not hold if no arguments were given.
* testsuite/launcher.all/command.exp: Add tests for bug #33817.
----
patch:
----
diff --git a/dejagnu b/dejagnu
index 06efcc7..6cd52f6 100755
--- a/dejagnu
+++ b/dejagnu
@@ -134,7 +134,6 @@ fi
# Remove any leading autoconf platform prefix and the "dejagnu" prefix.
command="$(basename "$0" | sed -e 's/^.*-\?dejagnu-\?//')"
-commext=
while expr $# \> 0 > /dev/null
do
@@ -151,15 +150,12 @@ do
for ext in ${Variants}
do
if test -f "${commdir}/${command}.$ext" ; then
- commext="$commext $ext"
+ break 2
fi
done
if expr "$1" : - > /dev/null ; then
break
fi
- if test -n "$commext" ; then
- break
- fi
if test -n "$1" ; then
command="${command}-$1"
shift
@@ -168,6 +164,14 @@ do
fi
done
+commext=
+for ext in ${Variants}
+do
+ if test -f "${commdir}/${command}.$ext" ; then
+ commext="$commext $ext"
+ fi
+done
+
if test -z "$commext" && test -n "$command" ; then
echo ERROR: could not resolve command "$command"
exit 2
diff --git a/testsuite/launcher.all/command.exp
b/testsuite/launcher.all/command.exp
index eb7b219..9e21237 100644
--- a/testsuite/launcher.all/command.exp
+++ b/testsuite/launcher.all/command.exp
@@ -70,6 +70,15 @@ set tests {
"Found subcommand baz-quux with variants: gawk\n"
"Selected variant gawk" }
+ { "#" "bug #33817: ensure that the failure is 'no variant'"
+ " rather than 'could not resolve command'" }
+ { "dejagnu baz-quux is resolved but fails without GNU Awk (bug #33817)"
+ {baz-quux} {GAWK=bogus} 2
+ "ERROR: no variant of baz-quux was selected" }
+ { "dejagnu baz quux is resolved but fails without GNU Awk (bug #33817)"
+ {baz quux} {GAWK=bogus} 2
+ "ERROR: no variant of baz-quux was selected" }
+
{ "#" invalid direct calls }
{ "dejagnu -v bar fails" {-v bar} {} 2
----
-- Jacob