+2010-09-26 Stefano Lattarini <stefano.lattarini@gmail.com>
+
+ Extend tests on `--help' and `--version' options.
+ * tests/help.test: Create a new empty directory and chdir into
+ it, rather than removing already present files. Run the aclocal
+ and automake wrapper scripts directly, instead of relying on
+ $AUTOMAKE and $ACLOCAL. Be sure to correctly match literal dots
+ in aclocal's and automake's stderr. Add a trailing `:' command.
+ * tests/help2.test: New test, checking that options `--help' and
+ `--version' works in directories with broken `configure.in'.
+ * tests/help3.test: New test, checking that options `--help' and
+ `--version' take precedence on the other options.
+ * tests/help4.test: New test, checking that the first among the
+ `--help' and `--version' options to be specified on the command
+ line wins.
+ * tests/Makefile.am (TESTS): Updated.
+
2010-09-25 Stefano Lattarini <stefano.lattarini@gmail.com>
Testsuite: Use `$PATH_SEPARATOR', not `:', when extending PATH.
gnits3.test \
header.test \
help.test \
+help2.test \
+help3.test \
+help4.test \
help-depend.test \
help-depend2.test \
help-dmalloc.test \
gnits3.test \
header.test \
help.test \
+help2.test \
+help3.test \
+help4.test \
help-depend.test \
help-depend2.test \
help-dmalloc.test \
set -e
-# Ensure we are run from the right directory.
-# (The last thing we want is to delete some random user files.)
-test -f ../defs
-rm -f *
+# Ensure we run in an empty directory.
+mkdir emptydir
+cd emptydir
-$ACLOCAL --version
-$ACLOCAL --help
-$AUTOMAKE --version
-$AUTOMAKE --help
+aclocal-$APIVERSION --version
+aclocal-$APIVERSION --help
+automake-$APIVERSION --version
+automake-$APIVERSION --help
-# aclocal and automake cannot work without configure.ac or configure.in
-$ACLOCAL 2>stderr && { cat stderr >&2; Exit 1; }
+# Sanity checks: aclocal and automake cannot work without configure.ac
+# or configure.in.
+aclocal-$APIVERSION 2>stderr && { cat stderr >&2; Exit 1; }
cat stderr >&2
-grep configure.ac stderr
-grep configure.in stderr
-AUTOMAKE_fails
-grep configure.ac stderr
-grep configure.in stderr
+$FGREP configure.ac stderr
+$FGREP configure.in stderr
+automake-$APIVERSION 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+$FGREP configure.ac stderr
+$FGREP configure.in stderr
+
+:
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2010 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/>.
+
+# Make sure --help and --version work, even when the current directory
+# contains a broken configure.in.
+. ./defs || Exit 1
+
+set -e
+
+# Ensure we run in a new, clean directory.
+mkdir cleandir
+cd cleandir
+
+echo '[' > configure.in
+
+automake-$APIVERSION --version
+automake-$APIVERSION --help
+
+# aclocal and automake cannot work without configure.ac or configure.in
+aclocal-$APIVERSION 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+$FGREP configure.in stderr
+automake-$APIVERSION 2>stderr && { cat stderr >&2; Exit 1; }
+cat stderr >&2
+$FGREP configure.in stderr
+
+:
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2010 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/>.
+
+# Make sure --help and --version takes precedence over other options.
+
+. ./defs || Exit 1
+
+set -e
+
+# We must have full control over the content of the current directory.
+mkdir cleandir
+cd cleandir
+
+cat > configure.in <<END
+AC_INIT([$me], [1.0])
+AC_CONFIG_AUX_DIR([.]) dnl prevent automake from looking into '..'
+AM_INIT_AUTOMAKE([foreign])
+AC_CONFIG_FILES([Makefile])
+END
+
+cat > Makefile.am <<END
+## so that install-sh will be required
+pkgdata_DATA =
+END
+
+aclocal-$APIVERSION --force --help --output=foo.m4
+test ! -r foo.m4
+aclocal-$APIVERSION --output=foo.m4 --version --force
+test ! -r foo.m4
+# Sanity check.
+aclocal-$APIVERSION --output=foo.m4 --force
+test -f foo.m4
+
+mv -f foo.m4 aclocal.m4 # automake will need aclocal.m4
+
+automake-$APIVERSION --add-missing --help --copy
+test ! -r install-sh
+automake-$APIVERSION --copy --version --add-mising
+test ! -r install-sh
+# Sanity check.
+automake-$APIVERSION --add-missing --copy
+test -f install-sh
+
+:
--- /dev/null
+#! /bin/sh
+# Copyright (C) 2010 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/>.
+
+# Make sure --help and --version work, even when no configure.ac
+# is in the current directory.
+
+. ./defs || Exit 1
+
+set -e
+
+# Ensure we run in an empty directory.
+mkdir emptydir
+cd emptydir
+
+escape_dots () { sed 's/\./\\./g'; } # avoid issues with `\' in backquotes
+apiversion_rx=`echo "$APIVERSION" | escape_dots`
+
+aclocal-$APIVERSION --version --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep "^aclocal.*$apiversion_rx" stdout
+grep "^Usage" stdout && Exit 1
+
+aclocal-$APIVERSION --help --version >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep "^Usage" stdout
+grep "^aclocal.*$apiversion_rx" stdout && Exit 1
+
+automake-$APIVERSION --version --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep "^automake.*$apiversion_rx" stdout
+grep "^Usage" stdout && Exit 1
+
+automake-$APIVERSION --help --version >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep "^Usage" stdout
+grep "^automake.*$apiversion_rx" stdout && Exit 1
+
+: