summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2020-12-08 10:36:28 -0500
committerZack Weinberg <zackw@panix.com>2020-12-08 10:36:28 -0500
commit48a3113c20920ac733483ecff214446477ac0b1d (patch)
tree3d80f6828e07403b29623306f605cc50fe36cc86
parentc3afa488831e37137f3319f24456bb2cf7953acf (diff)
downloadautoconf-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.at31
-rw-r--r--tests/semantics.at16
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]])