diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2014-12-28 14:02:30 +0100 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2014-12-28 14:45:31 +0100 |
commit | 0fae5905f9b676725a7e82c7aa03e8e3cbf5008a (patch) | |
tree | 366da3df1af671cbc75e346add508a9d79e2625d /t/self-check-shell-no-trail-bslash.sh | |
parent | cd040965d51f9818c56a714efaaaa699eb93b503 (diff) | |
download | automake-0fae5905f9b676725a7e82c7aa03e8e3cbf5008a.tar.gz |
tests: make script 'shell-no-trail-bslash' simpler and more robust
This solves spurious failure in the 'check-no-trailing-backslash-in-recipes'
target for Automake-NG.
This is basically a backport of Automake-NG commit v1.14.1-1010-g85aae58;
the point is to minimize the amount of spurious diffs between the mainline
Automake and the Automake-NG source trees.
* t/ax/shell-no-trail-bslash.in: Simplify and fortify.
* t/self-check-shell-no-trail-bslash.sh: Enhance.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 't/self-check-shell-no-trail-bslash.sh')
-rw-r--r-- | t/self-check-shell-no-trail-bslash.sh | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/t/self-check-shell-no-trail-bslash.sh b/t/self-check-shell-no-trail-bslash.sh index 14ee02cdf..19198898b 100644 --- a/t/self-check-shell-no-trail-bslash.sh +++ b/t/self-check-shell-no-trail-bslash.sh @@ -1,5 +1,5 @@ #! /bin/sh -# Copyright (C) 2012-2013 Free Software Foundation, Inc. +# Copyright (C) 2012-2014 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 @@ -34,12 +34,42 @@ bad: END SHELL=$am_testaux_builddir/shell-no-trail-bslash + $SHELL -c 'exit 0' test "$($SHELL -c 'echo is o\k')" = "is ok" +echo 'echo is ok\"' > ok.sh +$SHELL ./ok.sh +test "$($SHELL ./ok.sh)" = "is ok\"" + +tab=' ' +nl=' +' +for sfx in \ + '\' \ + '\\' \ + '\\\\\' \ + '\ ' \ + "\\$tab" \ + "\\ $tab$tab " \ + "\\$nl" \ + "\\ $nl " \ + "\\$nl$nl$nl" \ +; do + for pfx in "" "echo bad" ": a${nl}# multine${nl}: text"; do + cmd=${pfx}${sfx} + printf '%s\n' "$cmd" > bad.sh + for args in '-c "$cmd"' './bad.sh'; do + eval "\$SHELL $args 2>stderr && { cat stderr >&2; exit 1; }; :" + cat stderr >&2 + $FGREP "recipe/script ends with backslash character" stderr + done + done +done + $MAKE good run_make -E -e FAIL bad SHELL="$SHELL" -$FGREP "recipe ends with backslash character" stderr +$FGREP "recipe/script ends with backslash character" stderr : |