⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m4sugar.at

📁 autoconf是一个产生可以自动配置源代码包
💻 AT
字号:
#							-*- Autotest -*-AT_BANNER([M4sugar.])# Copyright (C) 2000, 2001, 2002, 2005, 2006 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# the Free Software Foundation; either version 2, or (at your option)# any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA# 02110-1301, USA.# AT_CHECK_M4SUGAR_TEXT(CODE, STDOUT, STDERR)# -------------------------------------------# Check that m4sugar CODE expands to STDOUT and emits STDERR.m4_define([AT_CHECK_M4SUGAR_TEXT],[AT_DATA_M4SUGAR([script.4s],[[m4_initm4_divert_push(0)[]dnl]$1[[]dnlm4_divert_pop(0)]])AT_CHECK_M4SUGAR([-o-],, [$2], [$3])])# AT_CHECK_M4SUGAR_TEXT# Order of the tests:# - m4_warn## - m4_require# uses warn/error code.## - m4_text_wrap## --------- #### m4_warn.  #### --------- ##AT_SETUP([m4@&t@_warn])# m4_text_wrap is used to display the help strings.  Also, check that# commas are not swallowed.  This can easily happen because of# m4-listification.# FIXME: For the time being we use -f to make sure we do issue the# warnings.  But maybe autom4te should handle that by itself?AT_DATA_M4SUGAR([script.4s],[[m4_initm4_defun([cross_warning],[m4_warn([cross],  [cross])])m4_divert([0])dnlm4_warn([obsolete],  [obsolete])dnlcross_warning[]dnlm4_warn([syntax], [syntax])dnl]])AT_CHECK_M4SUGAR([-o-], 0, [],[script.4s:8: warning: syntax])AT_CHECK_M4SUGAR([-o- -Wall -f], 0, [],[script.4s:6: warning: obsoletescript.4s:7: warning: crossscript.4s:3: cross_warning is expanded from...script.4s:7: the top levelscript.4s:8: warning: syntax])AT_CHECK_M4SUGAR([-o- -Wnone,cross -f], 0, [],[script.4s:7: warning: crossscript.4s:3: cross_warning is expanded from...script.4s:7: the top level])AT_CHECK_M4SUGAR([-o- -Wnone,cross,error -f], 1, [],[[script.4s:7: warning: crossscript.4s:3: cross_warning is expanded from...script.4s:7: the top level]])AT_CLEANUP## --------------------------- #### m4_require: error message.  #### --------------------------- ##AT_SETUP([m4@&t@_require: error message])AT_DATA_M4SUGAR([script.4s],[[m4_defun([foo], [FOO])m4_require([foo])]])AT_CHECK_M4SUGAR([], 1, [],[[script.4s:2: error: m4@&t@_require(foo): cannot be used outside of an m4_defun'd macroscript.4s:2: the top levelautom4te: m4 failed with exit status: 1]])AT_CLEANUP## ----------------------------------- #### m4_require: circular dependencies.  #### ----------------------------------- ##AT_SETUP([m4@&t@_require: 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# m4-listification.AT_DATA_M4SUGAR([script.4s],[[m4_defun([foo],[m4_require([bar])])m4_defun([bar],[m4_require([foo])])m4_defun([baz],[m4_require([foo])])m4_initm4_divert([0])dnlbaz]])AT_CHECK_M4SUGAR([], 1, [],[[script.4s:12: error: m4@&t@_require: circular dependency of fooscript.4s:5: bar is expanded from...script.4s:2: foo is expanded from...script.4s:8: baz is expanded from...script.4s:12: the top levelautom4te: m4 failed with exit status: 1]])AT_CLEANUP## -------------- #### m4_text_wrap.  #### -------------- ##AT_SETUP([m4@&t@_text_wrap])# m4_text_wrap is used to display the help strings.  Also, check that# commas are not swallowed.  This can easily happen because of# m4-listification.AT_DATA_M4SUGAR([script.4s],[[m4_divert([0])dnlm4_text_wrap([Short string */], [   ], [/* ], 20)m4_text_wrap([Much longer string */], [   ], [/* ], 20)m4_text_wrap([Short doc.], [          ], [  --short ], 30)m4_text_wrap([Short doc.], [          ], [  --too-wide], 30)m4_text_wrap([Super long documentation.], [          ], [  --too-wide], 30)m4_text_wrap([First, second  , third, [,quoted]])]])AT_DATA([expout],[[/* Short string *//* Much longer   string */  --short Short doc.  --too-wide          Short doc.  --too-wide          Super long          documentation.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], [9a@_c])AT_CLEANUP## ---------- #### M4 Loops.  #### ---------- ##AT_SETUP([M4 loops])AT_CHECK_M4SUGAR_TEXT([[dnlm4_define([myvar], [outer value])dnlm4_for([myvar], 1, 3, 1, [ myvar])m4_for([myvar], 1, 3,  , [ myvar])m4_for([myvar], 3, 1,-1, [ myvar])m4_for([myvar], 3, 1,  , [ myvar])m4_for([myvar], 1, 3, 2, [ myvar])m4_for([myvar], 3, 1,-2, [ myvar])m4_for([myvar],-1,-3,-2, [ myvar])m4_for([myvar],-3,-1, 2, [ myvar])dnl Make sure we recalculate the bounds correctly:m4_for([myvar], 1, 3, 3, [ myvar])m4_for([myvar], 1, 6, 3, [ myvar])m4_for([myvar],22,-7,-5, [ myvar])m4_for([myvar],-2,-7,-4, [ myvar])m4_for([myvar],-7,-2, 4, [ myvar])dnl Make sure we are not exposed to division truncation:m4_for([myvar], 2, 5, 2, [ myvar])m4_for([myvar],-5,-2, 2, [ myvar])m4_for([myvar], 5, 2,-2, [ myvar])m4_for([myvar],-2,-5,-2, [ myvar])dnl Make sure we do not divide by zero:m4_for([myvar], 1, 1,  , [ myvar])m4_for([myvar], 1, 1,+2, [ myvar])m4_for([myvar], 1, 1,-2, [ myvar])dnl Make sure we do not loop endlesslym4_for([myval], 1, 1, 0, [ myval])dnl Make sure to properly parenthesizem4_for([myvar], 3-5, -2+8, , [ myvar])m4_for([myvar], -2+8, 3-5, , [ myvar])m4_for([myvar], 8, 16, 3 * 2, [ myvar])m4_for([myvar], 8, 16, -3 * -2, [ myvar])m4_for([myvar], [2<<2], [2<<3], [-3 * (-2)], [ myvar])m4_foreach([myvar], [[a], [b, c], [d], [e],[f]], [ myvar|])m4_foreach_w([myvar], [a  b c, d,e fg], [ myvar|])myvar]],[[ 1 2 3 1 2 3 3 2 1 3 2 1 1 3 3 1 -1 -3 -3 -1 1 1 4 22 17 12 7 2 -3 -2 -6 -7 -3 2 4 -5 -3 5 3 -2 -4 1 1 1 1 -2 -1 0 1 2 3 4 5 6 6 5 4 3 2 1 0 -1 -2 8 14 8 14 8 14 a| b, c| d| e| f| a| b| c,| d,e| f| g|outer value]], [])AT_DATA_M4SUGAR([script.4s],[[m4_initm4_divert([0])dnlm4_for([myvar], 1, 3,-1, [ myvar])]])AT_CHECK_M4SUGAR([], 1, [],[[script.4s:3: error: assert failed: -1 > 0script.4s:3: the top levelautom4te: m4 failed with exit status: 1]])AT_DATA_M4SUGAR([script.4s],[[m4_initm4_divert([0])dnlm4_for([myvar], 1, 2, 0, [ myvar])]])AT_CHECK_M4SUGAR([], 1, [],[[script.4s:3: error: assert failed: 0 > 0script.4s:3: the top levelautom4te: m4 failed with exit status: 1]])AT_DATA_M4SUGAR([script.4s],[[m4_initm4_divert([0])dnlm4_for([myvar], 2, 1, 0, [ myvar])]])AT_CHECK_M4SUGAR([], 1, [],[[script.4s:3: error: assert failed: 0 < 0script.4s:3: the top levelautom4te: m4 failed with exit status: 1]])AT_CLEANUP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -