diff options
author | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-04-29 15:22:10 +0200 |
---|---|---|
committer | Stefano Lattarini <stefano.lattarini@gmail.com> | 2013-04-29 19:55:07 +0200 |
commit | 69f7791509c523fe8b199a432b72dca6a5ce3caa (patch) | |
tree | 10336ea162738dc61eefb3582b0a20746e89c75f /t/make-keepgoing.tap | |
parent | e432b0d3f7deffd3468e7b32ab6760bc7f3148f2 (diff) | |
download | automake-69f7791509c523fe8b199a432b72dca6a5ce3caa.tar.gz |
header-vars: recognize more make flags ('-k' in particular)
* lib/am/header-vars.am (am__running_with_option): Here.
Few improvements to comments, while at it.
(am__make_keepgoing): New, tell whther make is being runt with
the '-k' option.
* t/make-keepgoing.tap: New test.
* t/list-of-tests.mk: Add it.
* t/make-dryrun.tap: Minor edits to keep it more in sync with
the new test.
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 't/make-keepgoing.tap')
-rwxr-xr-x | t/make-keepgoing.tap | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/t/make-keepgoing.tap b/t/make-keepgoing.tap new file mode 100755 index 000000000..a81bf6c1d --- /dev/null +++ b/t/make-keepgoing.tap @@ -0,0 +1,134 @@ +#! /bin/sh +# Copyright (C) 2013 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 +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Check that $(am__make_keepgoing) works as expected. + +. test-init.sh + +plan_ 20 + +mkdir kool # Also used later. +if echo nil: | $MAKE -I kool -f -; then + make_supports_option_I () { return 0; } +else + make_supports_option_I () { return 1; } +fi + +echo AC_OUTPUT >> configure.ac + +cat > Makefile.am <<'END' +all: + @echo 'Default target $@ should not be called'>&2; exit 1; +k-y: + @echo ":: $$MAKEFLAGS ::" ;: For debugging. + $(am__make_keepgoing) +k-n: + @echo ":: $$MAKEFLAGS ::" ;: For debugging. + ! $(am__make_keepgoing) +END + +check_make () +{ + r=ok msg= mode= condition=: directive= reason= skip_reason= + case $1 in + k-[yn]) mode=$1;; + *) fatal_ "check_run: invalid usage";; + esac + shift + while test $# -gt 0; do + case $1 in + -C) condition=$2 skip_reason=$3; shift; shift;; + -M) msg=$2; shift;; + -X) directive=TODO;; + --) shift; break;; + *) break;; + esac + shift + done + msg=${mode}${msg:+" [$msg]"} + if $condition; then + $MAKE "$mode" ${1+"$@"} || r='not ok' + else + directive=SKIP reason=$skip_reason + fi + result_ "$r" -D "$directive" -r "$reason" "$msg" + unset r msg mode condition directive reason skip_reason +} + +# ---------------------------------------------------------------------- + +$ACLOCAL || fatal_ "aclocal failed" +$AUTOCONF || fatal_ "autoconf failed" +$AUTOMAKE || fatal_ "automake failed" +./configure || fatal_ "configure failed" + +# ---------------------------------------------------------------------- + +check_make k-n + +# Test against a possible regressions similar to those that affected +# detection of dry mode ("make -n"). +check_make k-n TESTS="k.test k2.test" +check_make k-n TESTS="k1 k k2" AM_MAKEFLAGS="TESTS='k1 k2'" +check_make k-n TESTS="k1 k k2" AM_MAKEFLAGS='TESTS="k1 k k2"' +check_make k-n FOOFLAGS="-k -k -nkf2 k -ks --keep -k" +check_make k-n MYFLAGS="-k --keepgoing -k --keep-run -k" + +# ---------------------------------------------------------------------- + +check_make k-y -k +check_make k-y -C using_gmake "\$MAKE is not GNU make" --keep-going + +# ---------------------------------------------------------------------- + +# Related to automake bug#12554: the "k" in "kool" used to confound +# am__make_keepgoing into thinking the '-k' option had been passed. + +pr='bug#12554' + +check_make k-n -C make_supports_option_I "-I make option unsupported" \ + -M "$pr" -I kool + +check_make k-n -C using_gmake "\$MAKE is not GNU make" \ + -M "$pr" -I kool --include keep-going + +check_make k-y -C make_supports_option_I "-I make option unsupported" \ + -M "$pr" -I kool -k + +check_make k-y -C using_gmake "\$MAKE is not GNU make" \ + -M "$pr" --keep-going -I kool --include keep-going + +# ---------------------------------------------------------------------- + +# Test for when shell metacharacters or backslashes are in $(MAKEFLAGS). + +check_metachars () +{ + check_make k-n -M "metachars" "$@" +} + +check_metachars MYFLAGS="-k \"k\" '-k' --keep-going -k" +check_metachars MYFLAGS='-knf2\ k\ \\k' +check_metachars MYFLAGS="(&) | ; \" \` '" +check_metachars MYFLAGS=" ' # ' " +check_metachars MYFLAGS='$(foo)' +check_metachars MYFLAGS='$(foo -k)' +check_metachars MYFLAGS='`touch bad`' +check_metachars MYFLAGS='`touch --keep-going bad`' + +# ---------------------------------------------------------------------- + +: |