diff options
Diffstat (limited to '')
-rw-r--r-- | tests/base.at | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/tests/base.at b/tests/base.at new file mode 100644 index 0000000..726dba9 --- /dev/null +++ b/tests/base.at @@ -0,0 +1,255 @@ +# -*- autoconf -*- + +AT_BANNER([Autoconf base layer.]) + + +## ------------------------------- ## +## AC_REQUIRE: topological sort.. ## +## ------------------------------- ## + +# Check that dependencies are always properly honored. + +AT_SETUP([AC_REQUIRE: topological sort]) + +AT_DATA(configure.ac, +[[define([REQUIRE_AND_CHECK], +[AC_REQUIRE([$1])dnl +test -z "$m4_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)]) + +AC_DEFUN([TEST1], +[REQUIRE_AND_CHECK([TEST2a]) +REQUIRE_AND_CHECK([TEST2b]) +test1=set]) + +AC_DEFUN([TEST2a], +[test2a=set]) + +AC_DEFUN([TEST2b], +[REQUIRE_AND_CHECK([TEST3]) +test2b=set]) + +AC_DEFUN([TEST3], +[REQUIRE_AND_CHECK([TEST2a]) +test3=set]) + +AC_PLAIN_SCRIPT()dnl +#! /bin/sh + +TEST1 +test -z "$test1" && + AC_MSG_ERROR([\$test1 is empty]) +AS_EXIT(0) +]]) + +AT_CHECK_AUTOCONF +AT_CHECK_CONFIGURE + +AT_CLEANUP + + + +## ----------------------------------------------- ## +## AC_REQUIRE and AC_DEFUN_ONCE: Require, expand. ## +## ----------------------------------------------- ## + +AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Require, expand]) + +AT_DATA([configure.ac], +[[AC_DEFUN([TEST], +[AC_REQUIRE([MULTI_TEST]) +AC_REQUIRE([SINGLE_TEST])]) + +AC_DEFUN([MULTI_TEST], +[multi_test=".$multi_test"]) + +AC_DEFUN_ONCE([SINGLE_TEST], +[single_test=".$single_test"]) + +AC_PLAIN_SCRIPT()dnl +#! /bin/sh + +TEST +TEST +MULTI_TEST +MULTI_TEST +SINGLE_TEST +SINGLE_TEST + +case $multi_test:$single_test in + ...:. ) AS_EXIT(0);; + ...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);; + *:. ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);; +esac +]]) + +AT_CHECK_AUTOCONF([], 0, [], +[configure.ac:18: warning: SINGLE_TEST invoked multiple times +configure.ac:19: warning: SINGLE_TEST invoked multiple times +]) + +AT_CHECK_CONFIGURE + +AT_CLEANUP + + + +## ----------------------------------------------- ## +## AC_REQUIRE and AC_DEFUN_ONCE: Expand, require. ## +## ----------------------------------------------- ## + +AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Expand, require]) + +AT_DATA([configure.ac], +[[AC_DEFUN([TEST], +[AC_REQUIRE([MULTI_TEST]) +AC_REQUIRE([SINGLE_TEST])]) + +AC_DEFUN([MULTI_TEST], +[multi_test=".$multi_test"]) + +AC_DEFUN_ONCE([SINGLE_TEST], +[single_test=".$single_test"]) + +AC_PLAIN_SCRIPT()dnl +#! /bin/sh + +MULTI_TEST +MULTI_TEST +SINGLE_TEST +SINGLE_TEST +TEST +TEST + +case $multi_test:$single_test in + ..:. ) AS_EXIT(0);; + ..:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);; + *:. ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);; + * ) AC_MSG_ERROR([received `$multi_test:$single_test']);; +esac +]]) + +AT_CHECK_AUTOCONF([], 0, [], +[configure.ac:17: warning: SINGLE_TEST invoked multiple times +]) +AT_CHECK_CONFIGURE + +AT_CLEANUP + + + +## ------------------------- ## +## AC_REQUIRE & AC_PROVIDE. ## +## ------------------------- ## + +AT_SETUP([AC_REQUIRE & AC_PROVIDE]) + +AT_DATA([configure.ac], +[[AC_DEFUN([TEST], +[AC_REQUIRE([INNER_TEST])]) + +AC_DEFUN([INNER_TEST], +[inner_test=".$inner_test"]) + +AC_PLAIN_SCRIPT()dnl +#! /bin/sh + +AC_PROVIDE([INNER_TEST]) +TEST + +case $inner_test in + "" ) AS_EXIT(0);; + * ) AC_MSG_ERROR([received `$inner_test']);; +esac +]]) + +AT_CHECK_AUTOCONF +AT_CHECK_CONFIGURE + +AT_CLEANUP + + +## ---------------------- ## +## AC_REQUIRE & AC_LANG. ## +## ---------------------- ## + +AT_SETUP([AC_REQUIRE & AC_LANG]) + +AT_DATA([configure.ac], +[[AC_DEFUN([AC_F77_1], +[AC_LANG_PUSH([Fortran 77]) +if test $ac_ext != f; then + AC_MSG_ERROR([F77_1: current shell language is $ac_ext, expected Fortran]) +fi +AC_LANG_POP +]) + + +AC_DEFUN([AC_F77_2], +[AC_LANG_PUSH([Fortran 77]) +AC_REQUIRE([AC_F77_1]) +if test $ac_ext != f; then + AC_MSG_ERROR([F77_2: current shell language is $ac_ext, expected Fortran]) +fi +AC_LANG_POP +]) + +AC_INIT +AC_F77_2 +AS_EXIT(0) +]]) + +AT_CHECK_AUTOCONF +AT_CHECK_CONFIGURE + +AT_CLEANUP + + +## ---------------- ## +## AC_CACHE_CHECK. ## +## ---------------- ## + +# Make sure AC_CACHE_CHECK is silent with -q. + +AT_SETUP([AC_CACHE_CHECK]) + +AT_DATA([configure.ac], +[[AC_INIT +AC_CACHE_CHECK([for nothing], + [ac_nothing], + [ac_nothing=found]) +]]) + +AT_CHECK_AUTOCONF +AT_CHECK_CONFIGURE([-q]) + +AT_CLEANUP + + +## ---------- ## +## AC_TRY_*. ## +## ---------- ## + +AT_SETUP([AC_TRY_*]) + +AT_DATA([configure.ac], +[[AC_INIT + +if AC_TRY_COMMAND([(echo "The Cat in the Hat"; + echo "The Hat in the Cat" >&2) + | grep \^The\ Cat\ in\ the\ Hat\$ >/dev/null]); then + : +else + AC_MSG_ERROR([Didn't see the Cat in the Hat!]) +fi + +if AC_TRY_COMMAND([(echo "The Cat in the Hat"; + echo "The Hat in the Cat" >&2) + | grep \^The\ Hat\ in\ the\ Cat\$ >/dev/null]); then + AC_MSG_ERROR([Saw the Hat in the Cat!]) +fi +]]) + +AT_CHECK_AUTOCONF +AT_CHECK_CONFIGURE([-q]) + +AT_CLEANUP |