diff options
author | Zack Weinberg <zackw@panix.com> | 2020-12-08 10:36:28 -0500 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2020-12-08 10:36:28 -0500 |
commit | 48a3113c20920ac733483ecff214446477ac0b1d (patch) | |
tree | 3d80f6828e07403b29623306f605cc50fe36cc86 | |
parent | c3afa488831e37137f3319f24456bb2cf7953acf (diff) | |
download | autoconf-48a3113c20920ac733483ecff214446477ac0b1d.tar.gz |
Three minor testsuite fixes.
1. To insulate the test suite from a system-provided config.site file,
set the CONFIG_SITE environment variable to a file that is known not
to exist. Problem reported by Jannick.
2. AC_PROG_CC, AC_PROG_CXX, AC_PROG_CPP, and AC_PROG_CXXCPP may set
cache variables named ‘ac_cv_prog_$tool’ or ‘ac_cv_prog_ac_ct_$tool’,
depending on system conditions; _AT_CONFIG_CMP_PRUNE needs to handle
both possibilities. Found by testing on FreeBSD 12; I have no idea
why it didn’t show up on _any_ of my other test platforms.
3. The ‘AC_PROG_LEX with yywrap’ test needs to be skipped on systems
that don’t provide libl.a nor libfl.a. This change needed yet another
hook for AT_CHECK_MACRO. Found by testing on Alpine Linux.
(Ideally, instead of skipping this test, we would test that this
configure script *errors out* on these systems, but that would involve
much more invasive changes to AT_CHECK_MACRO, which I don’t want to
hold the release for.)
* tests/local.at (AT_PREPARE_TESTS): Set CONFIG_SITE to refer to
a file that is known not to exist, and export it.
(_AT_CONFIG_CMP_PRUNE): Prune all variables matching the
ERE ‘ac_cv_prog_(ac_ct_)?(CC|CXX|CPP|CXXCPP)’.
(AT_CHECK_MACRO): Add PRETEST-CMDS argument which takes commands to
execute immediately after AT_SETUP.
* tests/semantics.at (AC_PROG_LEX with yywrap): Using PRETEST-CMDS,
skip this test on OSes where neither -ll nor -lfl provides a
definition of yywrap.
-rw-r--r-- | tests/local.at | 31 | ||||
-rw-r--r-- | tests/semantics.at | 16 |
2 files changed, 38 insertions, 9 deletions
diff --git a/tests/local.at b/tests/local.at index cda8db80..6062bcfa 100644 --- a/tests/local.at +++ b/tests/local.at @@ -29,11 +29,17 @@ AT_COLOR_TESTS # Sanitize the environment used for tests. AT_PREPARE_TESTS( -[# These variables should not be inherited from the -# parent environment. -AS_UNSET([CONFIG_SITE]) +[# MAKEFLAGS should not be inherited from the parent environment. AS_UNSET([MAKEFLAGS]) +# We do not want to read any external config.site file. +# If CONFIG_SITE is not set, autoconf will look for config.site in +# $prefix/share and $prefix/etc. +AS_IF([test -e nonexistent], + [AS_ERROR([something named 'nonexistent' exists in the test directory])]) +CONFIG_SITE=`pwd`/nonexistent/config.site +export CONFIG_SITE + # Ensure MAKE is set to a useful value. Unlike the above, we *do* # want to inherit this variable from the parent environment and/or # our command line. @@ -445,8 +451,8 @@ fi # - ac_cv_env_(any of the above)_(set|value) # - ac_cv_c_compiler_gnu, ac_cv_cxx_compiler_gnu # - ac_cv_c_decl_report, ac_cv_cxx_decl_report -# - ac_cv_prog_c_*, ac_cv_prog_cxx_*, ac_cv_prog_ac_ct_(CC|CXX) -# - ac_cv_prog_CPP, ac_cv_prog_CXXCPP +# - ac_cv_prog_c_*, ac_cv_prog_cxx_*, +# - ac_cv_prog_(ac_ct_)?(CC|CXX|CPP|CXXCPP) # + other ac_cv_c_* are renamed to ac_cv_cxx_* # + OPENMP_CFLAGS is renamed to OPENMP_CXXFLAGS # vary:NAME (where NAME is any identifier): ignore ac_cv_NAME @@ -527,10 +533,14 @@ m4_define([_AT_CONFIG_CMP_PRUNE], /^ac_cv_env_CXXFLAGS_value=/ d /^ac_cv_env_GXX_set=/ d /^ac_cv_env_GXX_value=/ d - /^ac_cv_prog_ac_ct_CC=/ d - /^ac_cv_prog_ac_ct_CXX=/ d + /^ac_cv_prog_CC=/ d + /^ac_cv_prog_CXX=/ d /^ac_cv_prog_CPP=/ d /^ac_cv_prog_CXXCPP=/ d + /^ac_cv_prog_ac_ct_CC=/ d + /^ac_cv_prog_ac_ct_CXX=/ d + /^ac_cv_prog_ac_ct_CPP=/ d + /^ac_cv_prog_ac_ct_CXXCPP=/ d /^ac_cv_c_compiler_gnu=/ d /^ac_cv_cxx_compiler_gnu=/ d /^ac_cv_c_decl_report=/ d @@ -681,7 +691,7 @@ AT_CLEANUP ]) # AT_CHECK_MACRO(MACRO, [MACRO-USE], [ADDITIONAL-CMDS], -# [AUTOCONF-FLAGS], [TEST-PARAMETERS]) +# [AUTOCONF-FLAGS], [TEST-PARAMETERS], [PRETEST-CMDS]) # ----------------------------------------------------- # Create a minimalist configure.ac running the macro named MACRO # (using the code in MACRO-USE if that argument is not empty, @@ -707,6 +717,10 @@ AT_CLEANUP # If ADDITIONAL-CMDS are present, they are executed after the first # pair of tests (with the C compiler, in native mode). # +# If PRETEST-CMDS are present, they are executed immediately after +# AT_SETUP; use this if the test needs to be skipped conditionally, +# for example. +# # If TEST-PARAMETERS are present, they should be a space-separated # list of modifiers to how the test is carried out. Currently # the following modifiers are defined: @@ -723,6 +737,7 @@ AT_CLEANUP # may legitimately vary between the C tests and the C++ tests. m4_define([AT_CHECK_MACRO], [AT_SETUP([$1]) +m4_n([$6])dnl # C compiler, native mode. AT_CONFIGURE_AC([m4_default([$2], [$1])]) diff --git a/tests/semantics.at b/tests/semantics.at index e6c7cf20..ac7fe013 100644 --- a/tests/semantics.at +++ b/tests/semantics.at @@ -1250,9 +1250,23 @@ AT_CLEANUP # their paces as much as the autogenerated AT_CHECK_MACRO invocation # used to, back when AC_PROG_LEX took no arguments. -AT_CHECK_MACRO([AC_PROG_LEX with yywrap], [AC_PROG_LEX([yywrap])]) AT_CHECK_MACRO([AC_PROG_LEX with noyywrap], [AC_PROG_LEX([noyywrap])]) +AT_CHECK_MACRO([AC_PROG_LEX with yywrap], [AC_PROG_LEX([yywrap])], + [], [], [], +[# Skip this test on OSes where there is no -ll nor -lfl. + +AT_DATA([configure.ac], +[[AC_INIT([lexlib-probe], [1]) +AC_PROG_CC +AC_SEARCH_LIBS([yywrap], [l fl], [], [AS_EXIT(77)]) +AC_OUTPUT +]]) +AT_CHECK_AUTOCONF +AT_CHECK_CONFIGURE +]) + + AT_SETUP([AC_PROG_LEX in legacy mode]) AT_CONFIGURE_AC([[AC_PROG_LEX]]) |