Document FSEEKO fix.
[autoconf.git] / tests / base.at
blob1927e4b7034303632a42d4840a998701cd1ad0c7
1 #                                                       -*- Autotest -*-
3 AT_BANNER([Autoconf base layer.])
5 # Copyright (C) 2000, 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2, or (at your option)
10 # any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20 # 02110-1301, USA.
23 ## ------------------------------- ##
24 ## AC_REQUIRE: topological sort..  ##
25 ## ------------------------------- ##
27 # Check that dependencies are always properly honored.
29 AT_SETUP([AC_REQUIRE: topological sort])
31 AT_DATA([configure.ac],
32 [[define([REQUIRE_AND_CHECK],
33 [AC_REQUIRE([$1])
34 test -z "$m4@&t@_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)])
36 AC_DEFUN([TEST1],
37 [REQUIRE_AND_CHECK([TEST2a])
38 REQUIRE_AND_CHECK([TEST2b])
39 test1=set])
41 AC_DEFUN([TEST2a],
42 [test2a=set])
44 AC_DEFUN([TEST2b],
45 [REQUIRE_AND_CHECK([TEST3])
46 test2b=set])
48 AC_DEFUN([TEST3],
49 [REQUIRE_AND_CHECK([TEST2a])
50 test3=set])
52 AS@&t@_INIT
54 TEST1
55 test -z "$test1" &&
56   AC_MSG_ERROR([\$test1 is empty])
57 AS_EXIT(0)
58 ]])
60 AT_CHECK_AUTOCONF
61 AT_CHECK_CONFIGURE
63 AT_CLEANUP
66 ## --------------------------- ##
67 ## AC_REQUIRE: error message.  ##
68 ## --------------------------- ##
70 # Check that the message mentions AC_DEFUN, not m4_defun.
72 AT_SETUP([AC_REQUIRE: error message])
73 AT_DATA([configure.ac],
74 [[AC_REQUIRE([AC_PROG_CC])
75 ]])
77 AT_CHECK_AUTOCONF([], [1], [],
78 [[configure.ac:1: error: AC_REQUIRE(AC_PROG_CC): cannot be used outside of an AC_DEFUN'd macro
79 configure.ac:1: the top level
80 autom4te: m4 failed with exit status: 1
81 ]])
82 AT_CLEANUP
85 ## ----------------------------------------------- ##
86 ## AC_REQUIRE and AC_DEFUN_ONCE: Require, expand.  ##
87 ## ----------------------------------------------- ##
89 AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Require, expand])
91 AT_DATA([configure.ac],
92 [[AC_DEFUN([TEST],
93 [AC_REQUIRE([MULTI_TEST])
94 AC_REQUIRE([SINGLE_TEST])])
96 AC_DEFUN([MULTI_TEST],
97 [multi_test=".$multi_test"])
99 AC_DEFUN_ONCE([SINGLE_TEST],
100 [single_test=".$single_test"])
102 AS@&t@_INIT
104 TEST
105 TEST
106 MULTI_TEST
107 MULTI_TEST
108 SINGLE_TEST
109 SINGLE_TEST
111 case $multi_test:$single_test in
112   ...:. ) AS_EXIT(0);;
113   ...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
114   *:.   ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
115 esac
118 AT_CHECK_AUTOCONF([], 0, [],
119 [configure.ac:17: warning: SINGLE_TEST invoked multiple times
120 configure.ac:18: warning: SINGLE_TEST invoked multiple times
123 AT_CHECK_CONFIGURE
125 AT_CLEANUP
129 ## ----------------------------------------------- ##
130 ## AC_REQUIRE and AC_DEFUN_ONCE: Expand, require.  ##
131 ## ----------------------------------------------- ##
133 AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Expand, require])
135 AT_DATA([configure.ac],
136 [[AC_DEFUN([TEST],
137 [AC_REQUIRE([MULTI_TEST])
138 AC_REQUIRE([SINGLE_TEST])])
140 AC_DEFUN([MULTI_TEST],
141 [multi_test=".$multi_test"])
143 AC_DEFUN_ONCE([SINGLE_TEST],
144 [single_test=".$single_test"])
146 AS@&t@_INIT
148 MULTI_TEST
149 MULTI_TEST
150 SINGLE_TEST
151 SINGLE_TEST
152 TEST
153 TEST
155 case $multi_test:$single_test in
156   ..:. ) AS_EXIT(0);;
157   ..:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
158   *:.  ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
159      * ) AC_MSG_ERROR([received `$multi_test:$single_test']);;
160 esac
163 AT_CHECK_AUTOCONF([], 0, [],
164 [configure.ac:16: warning: SINGLE_TEST invoked multiple times
166 AT_CHECK_CONFIGURE
168 AT_CLEANUP
172 ## ------------------------- ##
173 ## AC_REQUIRE & AC_PROVIDE.  ##
174 ## ------------------------- ##
176 AT_SETUP([AC_REQUIRE & AC_PROVIDE])
178 AT_DATA([configure.ac],
179 [[AC_DEFUN([TEST],
180 [AC_REQUIRE([INNER_TEST])])
182 AC_DEFUN([INNER_TEST],
183 [inner_test=".$inner_test"])
185 AS@&t@_INIT
187 AC_PROVIDE([INNER_TEST])
188 TEST
190 case $inner_test in
191   "" ) AS_EXIT(0);;
192   *  ) AC_MSG_ERROR([received `$inner_test']);;
193 esac
196 AT_CHECK_AUTOCONF
197 AT_CHECK_CONFIGURE
199 AT_CLEANUP
202 ## ---------------- ##
203 ## AC_CACHE_CHECK.  ##
204 ## ---------------- ##
206 # Make sure AC_CACHE_CHECK is silent with -q.
208 AT_SETUP([AC_CACHE_CHECK])
210 AT_DATA([configure.ac],
211 [[AC_INIT
212 AC_CACHE_CHECK([for nothing],
213                [ac_nothing],
214                [ac_nothing=found])
217 AT_CHECK_AUTOCONF
218 AT_CHECK_CONFIGURE([-q])
220 AT_CLEANUP
223 ## ---------------- ##
224 ## AC_COMPUTE_INT.  ##
225 ## ---------------- ##
227 # Make sure AC_COMPUTE_INT fails properly.
229 AT_SETUP([AC_COMPUTE_INT])
231 AT_DATA([configure.ac],
232 [[AC_INIT
233 AC_COMPUTE_INT([invalid_expression],
234                [**0**],
235                [],
236                [invalid_expression=failed])
237 test "$invalid_expression" = failed ||
238   AC_MSG_ERROR([**0** evaluated to $invalid_expression instead of failing])
241 AT_CHECK_AUTOCONF
242 AT_CHECK_CONFIGURE
244 AT_CLEANUP
247 ## ---------------- ##
248 ## AC_TRY_COMMAND.  ##
249 ## ---------------- ##
251 AT_SETUP([AC_TRY_COMMAND])
253 AT_DATA([configure.ac],
254 [[AC_INIT
256 if AC_TRY_COMMAND([(echo "The Cat in the Hat";
257                     echo "The Hat in the Cat" >&2) |
258                    grep \^The\ Cat\ in\ the\ Hat\$ >/dev/null]); then
259   :
260 else
261   AC_MSG_ERROR([Didn't see the Cat in the Hat!])
264 if AC_TRY_COMMAND([(echo "The Cat in the Hat";
265                     echo "The Hat in the Cat" >&2) |
266                    grep \^The\ Hat\ in\ the\ Cat\$ >/dev/null]); then
267   AC_MSG_ERROR([Saw the Hat in the Cat!])
271 AT_CHECK_AUTOCONF
272 AT_CHECK_CONFIGURE([-q])
274 AT_CLEANUP
277 ## ------------ ##
278 ## Input/Output ##
279 ## ------------ ##
281 AT_SETUP([Input/Output])
283 m4_pattern_allow([^AS_(MESSAGE|ORIGINAL_STDIN)_FD$])
284 AT_DATA([configure.ac],
285 [[AC_INIT
286 cat <&AS_ORIGINAL_STDIN_FD >&AS_MESSAGE_FD
288 AT_CHECK_AUTOCONF
289 AT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure | grep -v 'configure: loading site script '],, [Hello
291 AT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure --silent])
293 AT_CLEANUP