diff options
Diffstat (limited to 't/make-dryrun.tap')
-rw-r--r-- | t/make-dryrun.tap | 105 |
1 files changed, 52 insertions, 53 deletions
diff --git a/t/make-dryrun.tap b/t/make-dryrun.tap index 3cd9e5a3d..df9aef7ab 100644 --- a/t/make-dryrun.tap +++ b/t/make-dryrun.tap @@ -14,41 +14,38 @@ # 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_dryrun) works as expected. +# Check that $(am.make.dry-run) works as expected. . test-init.sh -plan_ 60 - -if echo "all: ; +@printf %sbb%s aa cc" | $MAKE -n -f - | grep aabbcc; then - make_plus_silence () { return 0; } -else - make_plus_silence () { return 1; } -fi - -mkdir none # Also used later. -if echo nil: | $MAKE -I none -f -; then - make_supports_option_I () { return 0; } -else - make_supports_option_I () { return 1; } -fi +plan_ $((27 * 6)) echo AC_OUTPUT >> configure.ac cat > Makefile.am <<'END' +# For debugging. +$(warning MAKEFLAGS[make] => '$(MAKEFLAGS)') +$(warning MFLAGS[make] => '$(MFLAGS)') +$(warning MAKEFLAGS[env] => '$(shell printf "%s\\n" "$$MAKEFLAGS")') +$(warning MFLAGS[env] => '$(shell printf "%s\\n" "$$MFLAGS")') + all: - : Dummy, nothing to do. -run: - @echo ":: $$MAKEFLAGS :: $$MFLAGS ::" ;: For debugging. - $(am__make_dryrun) && exit 1; echo ok > from-run -dry: - +@echo ":: $$MAKEFLAGS :: $$MFLAGS ::" ;: For debugging. - +$(am__make_dryrun) || exit 1; echo ok > from-dry + @echo "Target '$@' should never run" >&2; exit 1; + +run-plain: + $(am.make.dry-run) && exit 1; echo ok > from-run +run-recursive: + $(MAKE) run-plain +dry-plain: + +$(am.make.dry-run) || exit 1; echo ok > from-dry +dry-recursive: + $(MAKE) dry-plain END +# Each invocation of this will run 6 tests. check_make () { - msg= mode= condition=: directive= reason= skip_reason= + msg= mode= case $1 in --dry) mode=dry;; --run) mode=run;; @@ -57,27 +54,25 @@ check_make () shift while test $# -gt 0; do case $1 in - -C) condition=$2 skip_reason=$3; shift; shift;; -M) msg=$2; shift;; --) shift; break;; *) break;; esac shift done - for opts in '' '-s' '-s -r'; do - r=ok - pmsg=${mode}${msg:+" [$msg]"}${opts:+" ($opts)"} - if $condition; then - $MAKE $opts "$mode" ${1+"$@"} || r='not ok' - test -f from-$mode || r='not ok' - test ! -e bad || r='not ok' - rm -f bad from-* || fatal_ "cleaning up" - else - directive=SKIP reason=$skip_reason - fi - result_ "$r" -D "$directive" -r "$reason" "$pmsg" + for kind in plain recursive; do + for opts in '' '-s' '-s -rR'; do + r=ok + msg2="${mode}, ${kind}"${msg:+" [$msg]"}${opts:+" ($opts)"} + $MAKE $opts "$mode-$kind" ${1+"$@"} || r='not ok' + test -f from-$mode || r='not ok' + test ! -e bad || r='not ok' + rm -f bad from-* || fatal_ "cleaning up" + result_ "$r" "$msg2" + unset r msg2 + done done - unset r msg pmsg opts mode condition directive reason skip_reason + unset msg opts mode } # ---------------------------------------------------------------------- @@ -90,20 +85,29 @@ $AUTOMAKE || fatal_ "automake failed" # ---------------------------------------------------------------------- check_make --run +check_make --run -k -# Test against a known regression. This was especially heinous, since +# Test against known regressions. These were especially heinous, since # make running in normal mode was sometimes mistaken for make running # in dry mode. + check_make --run TESTS="n1.test n2.test" -check_make --run TESTS="n1 n2" AM_MAKEFLAGS="TESTS='n1 n2'" -check_make --run TESTS="n1 n2" AM_MAKEFLAGS='TESTS="n1 n2"' +check_make --run TESTS="n1 n2" MAKEFLAGS="TESTS='n1 n2'" +check_make --run TESTS="n1 n2" MAKEFLAGS='TESTS="n1 n2"' check_make --run FOOFLAGS="-n -n -knf2 n --none -n" check_make --run MYFLAGS="-n --dryrun -n --dry-run -n" +check_make --run -- --print-directory -k +check_make --run -- --debug=an +check_make --run -- --print-directory --no-builtin-rules +check_make --run -- --no-print-directory +check_make --run -- --no-print-directory --no-builtin-rules + # ---------------------------------------------------------------------- -check_make --dry -C make_plus_silence 'recipe prefix "+" unsupported' -n -check_make --dry -C using_gmake "\$MAKE is not GNU make" --dry-run -k +check_make --dry -- -n +check_make --dry -- --dry-run --keep-going +check_make --dry -- --no-print-directory --dry-run -k # ---------------------------------------------------------------------- @@ -112,17 +116,12 @@ check_make --dry -C using_gmake "\$MAKE is not GNU make" --dry-run -k pr='bug#13760' -check_make --run -C make_supports_option_I "-I make option unsupported" \ - -M "$pr" -I none - -check_make --run -C using_gmake "\$MAKE is not GNU make" \ - -M "$pr" -I none --include dry-run - -check_make --dry -C make_supports_option_I "-I make option unsupported" \ - -M "$pr" -I none -n - -check_make --dry -C using_gmake "\$MAKE is not GNU make" \ - -M "$pr" --dry-run -I none --include dry-run +mkdir none dry-run +check_make --run -M "$pr" -- -I none +check_make --run -M "$pr" -- -I none --include dry-run +check_make --dry -M "$pr" -- -I none -n +check_make --dry -M "$pr" -- --dry-run -I none --include dry-run +rmdir none dry-run # ---------------------------------------------------------------------- |