diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2014-12-30 14:49:46 +0100 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2014-12-30 14:49:46 +0100 |
commit | 545e5740906595dff53c72af7153d4fa0392ccf8 (patch) | |
tree | 42179eff4be7ff5d1b25f56d6f5e62451f91138c /t | |
parent | 269893bbd44f3f7ece2d9fbdc6d2dddbec969e6d (diff) | |
parent | b8aa9fc0ce8d411be4451022e4b14d0f4238a9d9 (diff) | |
download | automake-545e5740906595dff53c72af7153d4fa0392ccf8.tar.gz |
Merge branch 'micro' into minor
* micro:
shell-no-trail-bslash: improve diagnostic in case of failure
Diffstat (limited to 't')
-rw-r--r-- | t/ax/shell-no-trail-bslash.in | 19 | ||||
-rw-r--r-- | t/self-check-shell-no-trail-bslash.sh | 8 |
2 files changed, 21 insertions, 6 deletions
diff --git a/t/ax/shell-no-trail-bslash.in b/t/ax/shell-no-trail-bslash.in index 322495824..26979b617 100644 --- a/t/ax/shell-no-trail-bslash.in +++ b/t/ax/shell-no-trail-bslash.in @@ -26,6 +26,7 @@ am_SHELL=${AM_TESTSUITE_SHELL-'@SHELL@'} ( set -e shell_command=; unset shell_command + shell_script=; unset shell_script while test $# -gt 0; do case $1 in # The shell might be invoked by make e.g. as "sh -ec" or "sh -ce". @@ -40,7 +41,8 @@ am_SHELL=${AM_TESTSUITE_SHELL-'@SHELL@'} if test x${shell_command+"set"} != x"set"; then if test $# -gt 0; then - shell_command=$(cat "$1") + shell_script=$1 + shell_command=$(cat <"$shell_script") else # Some make implementations, like *BSD's, pass the recipes to the # shell through its standard input. Trying to run our extra checks @@ -48,6 +50,7 @@ am_SHELL=${AM_TESTSUITE_SHELL-'@SHELL@'} exit 0 fi fi + original_shell_command=$shell_command tab=' ' nl=' @@ -59,10 +62,16 @@ am_SHELL=${AM_TESTSUITE_SHELL-'@SHELL@'} case "$shell_command" in *\\) - printf '%s\n' "$0: recipe/script ends with backslash character" >&2 - printf '%s\n' "=== BEGIN recipe/script" >&2 - printf '%s\n' "${am_shell_command-}" >&2 - printf '%s\n' "=== END recipe/script" >&2 + { + printf '%s\n' "$0: recipe/script ends with backslash character" + printf '%s\n' "=== BEGIN recipe/script" + if test x${shell_script+"set"} = x"set"; then + cat <"$shell_script" + else + printf '%s\n' "$original_shell_command" + fi + printf '%s\n' "=== END recipe/script" + } >&2 exit 1 ;; esac diff --git a/t/self-check-shell-no-trail-bslash.sh b/t/self-check-shell-no-trail-bslash.sh index 19198898b..8b7afa5c5 100644 --- a/t/self-check-shell-no-trail-bslash.sh +++ b/t/self-check-shell-no-trail-bslash.sh @@ -58,11 +58,17 @@ for sfx in \ ; do for pfx in "" "echo bad" ": a${nl}# multine${nl}: text"; do cmd=${pfx}${sfx} - printf '%s\n' "$cmd" > bad.sh + printf '%s' "$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 + cmd="$cmd" $PERL -w -e ' + undef $/; + $_ = <>; + index($_, $ENV{cmd}) >= 0 or exit 1; + ' <stderr + $FGREP "$cmd" stderr done done done |