summaryrefslogtreecommitdiff
path: root/t/make-dryrun.tap
diff options
context:
space:
mode:
Diffstat (limited to 't/make-dryrun.tap')
-rw-r--r--t/make-dryrun.tap105
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
# ----------------------------------------------------------------------