[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Fix m4_re_string, m4_re_word
From: |
Noah Misch |
Subject: |
Fix m4_re_string, m4_re_word |
Date: |
Tue, 18 Jan 2005 04:39:23 -0800 |
User-agent: |
Mutt/1.5.6i |
m4_re_string and m4_re_word have not worked in some time; a cleanup some time
back accidentally changed e.g. `[A-Za-z0-9_]' to `A-Za-z0-9_'. This patch
reverts that change and adds a test case.
AT_CHECK_ENV, one of the few (only?) m4_re_word users, now once again checks for
environment pollution. I updated its whitelist.
A few tests in semantics.at modified CPPFLAGS in their test `configure.ac's,
which AT_CHECK_ENV caught. I just adjusted them to not do that anymore.
The `GNU Fortran' test (#98 after applying this patch) now fails because it
modifies variables in the user namespace (AFAICS). I will post a separate patch
fixing that. All other tests pass.
(I forgot to update the comment above AT_CHECK_ENV; I am about to post a patch
that affects that area heavily, so I will do so with it.)
2005-01-18 Noah Misch <address@hidden>
* lib/m4sugar/m4sugar.m4 (m4_re_string, m4_re_word): Revert 2002-03-04.
* tests/local.at (AT_CHECK_M4SUGAR): Add `m4sugar' to keywords.
(AT_CHECK_ENV): Ignore LTLIBOBJS, FC variables, EGREP, FGREP, and SED.
* tests/m4sugar.at (AT_CHECK_M4SUGAR_TEXT, AT_CHECK_M4RE): New macros.
(Standard regular expressions): New test.
(m4_warn, m4_require: circular dependencies, m4_text_wrap): Strip excess
test name quoting.
* tests/semantics.at (AC_CHECK_HEADERS_OLD, AC_CHECK_HEADERS_NEW): Pass
CPPFLAGS to `configure' instead of setting it in `configure'.
diff -urp -X dontdiff ac-clean/lib/m4sugar/m4sugar.m4
ac-m4re/lib/m4sugar/m4sugar.m4
--- ac-clean/lib/m4sugar/m4sugar.m4 2005-01-04 09:15:51.000000000 -0500
+++ ac-m4re/lib/m4sugar/m4sugar.m4 2005-01-18 00:59:58.605751240 -0500
@@ -3,8 +3,8 @@ divert(-1)#
# Base M4 layer.
# Requires GNU M4.
#
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation,
-# Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 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
@@ -1373,8 +1373,9 @@ m4_define([m4_re_escape],
# m4_re_string
# ------------
# Regexp for `[a-zA-Z_0-9]*'
+# m4_dquote provides literal [] for the character class.
m4_define([m4_re_string],
-m4_defn([m4_cr_symbols2])dnl
+m4_dquote(m4_defn([m4_cr_symbols2]))dnl
[*]dnl
)
@@ -1383,7 +1384,7 @@ m4_defn([m4_cr_symbols2])dnl
# ----------
# Regexp for `[a-zA-Z_][a-zA-Z_0-9]*'
m4_define([m4_re_word],
-m4_defn([m4_cr_symbols1])dnl
+m4_dquote(m4_defn([m4_cr_symbols1]))dnl
m4_defn([m4_re_string])dnl
)
diff -urp -X dontdiff ac-clean/tests/local.at ac-m4re/tests/local.at
--- ac-clean/tests/local.at 2005-01-02 12:39:22.000000000 -0500
+++ ac-m4re/tests/local.at 2005-01-18 00:45:21.151069092 -0500
@@ -1,6 +1,7 @@
# M4 macros used in building Autoconf test suites. -*- Autotest -*-
-# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 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
@@ -107,7 +108,8 @@ m4_define([AT_DATA_M4SUGAR],
# AT_CHECK_M4SUGAR(FLAGS, [EXIT-STATUS = 0], STDOUT, STDERR)
# ----------------------------------------------------------
m4_define([AT_CHECK_M4SUGAR],
-[AT_CHECK_AUTOM4TE([--language=m4sugar script.4s -o script $1],
+[AT_KEYWORDS([m4sugar])
+AT_CHECK_AUTOM4TE([--language=m4sugar script.4s -o script $1],
[$2], [$3], [$4])])
@@ -202,7 +204,7 @@ m4_defun([AC_STATE_SAVE],
[^a[cs]_],
[^((exec_)?prefix|DEFS|CONFIG_STATUS)=],
[^(CC|CFLAGS|CPP|GCC|CXX|CXXFLAGS|CXXCPP|GXX|F77|FFLAGS|FLIBS|G77)=],
- [^(LIBS|LIB@&address@hidden|LDFLAGS)=],
+ [^(LIBS|LIB@&address@hidden|LTLIBOBJS|LDFLAGS)=],
[^INSTALL(_(DATA|PROGRAM|SCRIPT))?=],
[^(CYGWIN|ISC|MINGW32|MINIX|EMXOS2|XENIX|EXEEXT|OBJEXT)=],
[^(X_(CFLAGS|(EXTRA_|PRE_)?LIBS)|x_(includes|libraries)|(have|no)_x)=],
@@ -210,8 +212,10 @@ m4_defun([AC_STATE_SAVE],
[^(cross_compiling)=],
[^(interpval|PATH_SEPARATOR)=],
[^(F77_DUMMY_MAIN|f77_(case|underscore))=],
+ [^(FC_DUMMY_MAIN|FC|FCFLAGS|FCLIBS|FCFLAGS_f)=],
[^(ALLOCA|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB)=],
[^(AWK|LEX|LEXLIB|LEX_OUTPUT_ROOT|LN_S|M4|RANLIB|SET_MAKE|YACC)=],
+ [^(EGREP|FGREP|SED)=],
[^(_|@|.[*#?].|LINENO|OLDPWD|PIPESTATUS|RANDOM|SECONDS)=])' 2>/dev/null |
# There maybe variables spread on several lines, eg IFS, remove the dead
# lines.
diff -urp -X dontdiff ac-clean/tests/m4sugar.at ac-m4re/tests/m4sugar.at
--- ac-clean/tests/m4sugar.at 2003-08-27 11:14:04.000000000 -0400
+++ ac-m4re/tests/m4sugar.at 2005-01-18 01:08:20.335172729 -0500
@@ -2,7 +2,7 @@
AT_BANNER([M4sugar.])
-# Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001, 2002, 2005 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
@@ -20,6 +20,22 @@ AT_BANNER([M4sugar.])
# 02111-1307, USA.
+# AT_CHECK_M4SUGAR_TEXT(CODE, STDOUT, STDER)
+# ------------------------------------------
+# Check that m4sugar CODE expands to STDOUT and emits STDERR.
+m4_define([AT_CHECK_M4SUGAR_TEXT],
+[
+AT_DATA_M4SUGAR([script.4s],
+[[m4_init
+m4_divert_push(0)[]dnl
+]$1[[]dnl
+m4_divert_pop(0)
+]])
+
+AT_CHECK_M4SUGAR([-o-],, [$2], [$3])
+])# AT_CHECK_M4SUGAR_TEXT
+
+
# Order of the tests:
# - m4_warn
#
@@ -32,7 +48,7 @@ AT_BANNER([M4sugar.])
## m4_warn. ##
## --------- ##
-AT_SETUP([[m4@&address@hidden)
+AT_SETUP([m4@&address@hidden)
# m4_text_wrap is used to display the help strings. Also, check that
# commas are not swallowed. This can easily happen because of
@@ -83,7 +99,7 @@ AT_CLEANUP
## m4_require: circular dependencies. ##
## ----------------------------------- ##
-AT_SETUP([[m4@&address@hidden: circular dependencies]])
+AT_SETUP([m4@&address@hidden: circular dependencies])
# m4_text_wrap is used to display the help strings. Also, check that
# commas are not swallowed. This can easily happen because of
@@ -122,7 +138,7 @@ AT_CLEANUP
## m4_text_wrap. ##
## -------------- ##
-AT_SETUP([[m4@&address@hidden)
+AT_SETUP([m4@&address@hidden)
# m4_text_wrap is used to display the help strings. Also, check that
# commas are not swallowed. This can easily happen because of
@@ -164,3 +180,30 @@ First, second , third, [,quoted]
AT_CHECK_M4SUGAR([-o-], 0, [expout])
AT_CLEANUP
+
+## ------------------------------ ##
+## Standard regular expressions. ##
+## ------------------------------ ##
+
+AT_SETUP([Standard regular expressions])
+
+# AT_CHECK_M4RE(RE-NAME, TEXT, INTENT = `ok' | `')
+# ------------------------------------------------
+# Check whether RE-NAME (a macro whose definition is a regular expression)
+# matches TEXT. INTENT = `ok' if the match should succeed or else empty.
+m4_define([AT_CHECK_M4RE],
+[AT_CHECK_M4SUGAR_TEXT(
+[[m4_bregexp([$2], ^m4_defn([$1])$, [ok])
+]], [$3
+])])
+
+AT_CHECK_M4RE([m4_re_word], [ab9_c], [ok])
+AT_CHECK_M4RE([m4_re_word], [_9abc], [ok])
+AT_CHECK_M4RE([m4_re_word], [9ab_c])
+
+AT_CHECK_M4RE([m4_re_string], [ab9_c], [ok])
+AT_CHECK_M4RE([m4_re_string], [_9abc], [ok])
+AT_CHECK_M4RE([m4_re_string], [9ab_c], [ok])
+AT_CHECK_M4RE([m4_re_string], address@hidden)
+
+AT_CLEANUP
diff -urp -X dontdiff ac-clean/tests/semantics.at ac-m4re/tests/semantics.at
--- ac-clean/tests/semantics.at 2004-03-30 02:55:26.000000000 -0500
+++ ac-m4re/tests/semantics.at 2005-01-18 00:09:31.743128288 -0500
@@ -177,13 +177,11 @@ AT_DATA([header2.h],
[typedef foo bar;
])
-AT_CONFIGURE_AC(
-[CPPFLAGS="$CPPFLAGS -I."
-AC_CHECK_HEADERS(header2.h, [], [], -)])
+AT_CONFIGURE_AC([AC_CHECK_HEADERS(header2.h, [], [], -)])
AT_CHECK_AUTOCONF([-W obsolete])
AT_CHECK_AUTOHEADER
-AT_CHECK_CONFIGURE
+AT_CHECK_CONFIGURE([CPPFLAGS=-I.])
AT_CHECK_ENV
AT_CHECK_DEFINES(
[#define HAVE_HEADER2_H 1
@@ -211,12 +209,11 @@ AT_DATA([header3.h],
])
AT_CONFIGURE_AC(
-[CPPFLAGS="$CPPFLAGS -I."
-AC_CHECK_HEADERS(header2.h header3.h, [], [], address@hidden:@include
"header1.h"]])])
+[AC_CHECK_HEADERS(header2.h header3.h, [], [], address@hidden:@include
"header1.h"]])])
AT_CHECK_AUTOCONF([-W obsolete])
AT_CHECK_AUTOHEADER
-AT_CHECK_CONFIGURE
+AT_CHECK_CONFIGURE([CPPFLAGS=-I.])
AT_CHECK_ENV
AT_CHECK_DEFINES(
[#define HAVE_HEADER2_H 1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Fix m4_re_string, m4_re_word,
Noah Misch <=