From 78900b933039b7001443be126b63862430ec2648 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini Date: Thu, 28 Jun 2012 10:55:13 +0200 Subject: [PATCH] coverage: tests AM_MISSING_PROG usage Now that AM_MISSING_PROG is documented, we want to make sure it works as expected when used in third-party code. * t/am-missing-prog.sh: New test. * t/ammissing: Rename ... * t/am-macro-not-found.sh: ... like this, to avoid confusion (this test has nothing to do with the 'missing' script nor with the 'AM_MISSING_PROG' macro). * t/list-of-tests.mk: Adjust. Signed-off-by: Stefano Lattarini --- t/{ammissing.sh => am-macro-not-found.sh} | 0 t/am-missing-prog.sh | 99 +++++++++++++++++++++++ t/list-of-tests.mk | 3 +- 3 files changed, 101 insertions(+), 1 deletion(-) rename t/{ammissing.sh => am-macro-not-found.sh} (100%) create mode 100755 t/am-missing-prog.sh diff --git a/t/ammissing.sh b/t/am-macro-not-found.sh similarity index 100% rename from t/ammissing.sh rename to t/am-macro-not-found.sh diff --git a/t/am-missing-prog.sh b/t/am-missing-prog.sh new file mode 100755 index 000000000..a3e0caccb --- /dev/null +++ b/t/am-missing-prog.sh @@ -0,0 +1,99 @@ +#! /bin/sh +# Copyright (C) 2003-2012 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 . + +# Test AM_MISSING_PROG. + +. ./defs || Exit 1 + +cat >> configure.ac <<'END' +AM_MISSING_PROG([NO_SUCH_COMMAND], [am-none-none]) +AM_MISSING_PROG([MISMATCHED_COMMAND], [am-exit-63]) +AM_MISSING_PROG([OVERRIDDEN_COMMAND], [am-none-none]) +AM_MISSING_PROG([COMMAND_FOUND], [my-command]) +AC_OUTPUT +END + +mkdir bin +cat > bin/am-exit-63 <<'END' +#!/bin/sh +echo "Oops, I'm too old" +exit 63 +END +cat > bin/am-overridden <<'END' +#!/bin/sh +echo "Hey, I'm OK!" +exit 0 +END +cat > bin/my-command <<'END' +#!/bin/sh +echo SNAFU +exit 0 +END +chmod a+x bin/* +PATH=$(pwd)/bin$PATH_SEPARATOR$PATH; export PATH + +cat > Makefile.am <<'END' +# Different for different targets, for the sake of parallel make. +o = $@-stdout +e = $@-stderr + +debug_info = grep . $@-stdout $@-stderr +status_is = $(debug_info); echo $@: st=$$st; : test $$st -eq + +w_mis = 'am-none-none' is needed, and is missing on your system +w_old = 'am-exit-63' is needed, and is probably too old + +# FIXME: make this test stricter w.r.t. the exit statuses once +# FIXME: we are merged to master! +test1: + st=0; $(NO_SUCH_COMMAND) >$o 2>$e || st=$$?; $(status_is) 127 + grep "^WARNING: $(w_mis)" $e + test ! -s $o +test2: + st=0; $(MISMATCHED_COMMAND) >$o 2>$e || st=$$?; $(status_is) 63 + grep "^WARNING: $(w_old)" $e + test "`cat $o`" = "Oops, I'm too old" +test3: + st=0; $(OVERRIDDEN_COMMAND) >$o 2>$e || st=$$?; $(status_is) 0 + st=0; $(OVERRIDDEN_COMMAND) >$o 2>$e || st=$$?; \ + test ! -s $e + test "`cat $o`" = "Hey, I'm OK!" +test4: + st=0; $(COMMAND_FOUND) >$o 2>$e || st=$$?; $(status_is) 0 + test ! -s $e + test "`cat $o`" = SNAFU +check-local: test1 test2 test2 test4 +.PHONY: test1 test2 test2 test4 +CLEANFILES = test[1234]-stdout test[1234]-stderr +END + +$ACLOCAL +$AUTOCONF +$AUTOMAKE + +./configure OVERRIDDEN_COMMAND=am-overridden + +$FGREP COMMAND Makefile.in Makefile # For debugging. + +grep "^NO_SUCH_COMMAND = \${SHELL} .*/missing .*am-none-none" Makefile +grep "^MISMATCHED_COMMAND = \${SHELL} .*/missing .*am-exit-63" Makefile +grep "^COMMAND_FOUND = \${SHELL} .*/missing .*my-command" Makefile +grep '^OVERRIDDEN_COMMAND = am-overridden *$' Makefile + +$MAKE test1 test2 test3 test4 +$MAKE distcheck DISTCHECK_CONFIGURE_FLAGS='OVERRIDDEN_COMMAND=am-overridden' + +: diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index e16dd1d3a..5967fcb5a 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -125,7 +125,7 @@ t/amhello-cross-compile.sh \ t/amhello-binpkg.sh \ t/aminit-moreargs-deprecation.sh \ t/amassign.sh \ -t/ammissing.sh \ +t/am-macro-not-found.sh \ t/amopt.sh \ t/amopts-location.sh \ t/amopts-variable-expansion.sh \ @@ -686,6 +686,7 @@ t/missing3.sh \ t/missing4.sh \ t/missing5.sh \ t/missing6.sh \ +t/am-missing-prog.sh \ t/missing-auxfile-stops-makefiles-creation.sh \ t/mkdirp-deprecation.sh \ t/mkinstall.sh \ -- 2.34.1