summaryrefslogtreecommitdiff
path: root/t/self-check-shell-no-trail-bslash.sh
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2014-12-28 14:02:30 +0100
committerStefano Lattarini <stefano.lattarini@gmail.com>2014-12-28 14:45:31 +0100
commit0fae5905f9b676725a7e82c7aa03e8e3cbf5008a (patch)
tree366da3df1af671cbc75e346add508a9d79e2625d /t/self-check-shell-no-trail-bslash.sh
parentcd040965d51f9818c56a714efaaaa699eb93b503 (diff)
downloadautomake-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.sh34
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
: