Import m4 regression tests from OpenBSD

Obtained from:	OpenBSD
Approved by:	des (mentor)
This commit is contained in:
Baptiste Daroussin 2012-04-30 22:00:34 +00:00
parent faf66437f8
commit 2b42644bb2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=234852
47 changed files with 1076 additions and 43 deletions

View File

@ -1,4 +1,4 @@
# $FreeBSD$
all:
@sh ${.CURDIR}/regress.sh ${.CURDIR}
@m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR}

View File

@ -0,0 +1,9 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/args.m4,v 1.1 2001/10/10 23:23:59 espie Exp $
dnl Expanding all arguments
define(`A', `first form: $@, second form $*')dnl
define(`B', `C')dnl
A(1,2,`B')
dnl indirection means macro can get called with argc == 2 !
indir(`A',1,2,`B')
indir(`A')

View File

@ -0,0 +1,5 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/args2.m4,v 1.1 2008/08/16 09:57:12 espie Exp $
dnl Preserving spaces within nested parentheses
define(`foo',`$1')dnl
foo(( check for embedded spaces))

View File

@ -0,0 +1,59 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/comments.m4,v 1.1 2005/09/06 15:33:21 espie Exp $
dnl checking the way changecom works.
1: normal
define(`comment', `COMMENT')dnl
define(`p', 'XXX')dnl
# this is a comment
>> this is a comment
p this is a comment
p this is a comment q comment too
2: `changecom(>>)dnl'
changecom(>>)dnl
# this is a comment
>> this is a comment
p this is a comment
p this is a comment q comment too
3: `changecom dnl'
changecom dnl
# this is a comment
>> this is a comment
p this is a comment
p this is a comment q comment too
4: `changecom()dnl'
changecom()dnl
# this is a comment
>> this is a comment
p this is a comment
p this is a comment q comment too
5: `changecom(,)dnl'
changecom(,)dnl
# this is a comment
>> this is a comment
p this is a comment
p this is a comment q comment too
6: `changecom(`p',q)dnl'
changecom(`p',q)dnl
# this is a comment
>> this is a comment
p this is a comment
p this is a comment q comment too
7: `changecom(`p')dnl'
changecom(`p')dnl
# this is a comment
>> this is a comment
p this is a comment
p this is a comment q comment too
8: `changecom(#)dnl'
changecom(#)dnl
# this is a comment
>> this is a comment
p this is a comment
p this is a comment q comment too

View File

@ -0,0 +1,43 @@
dnl $FreeBSD$
changequote(`{',`}')dnl
dnl
esyscmd({sh -c "m4<<EOF
define(_bp,hi there a)
define(_comb,
_bp($1$2)
_bp($2$1)
)
define(bp,
_comb(aaaa,foo0)
_comb(bbbb,foo0)
_comb(cccc,foo0)
_comb(dddd,foo0)
_comb(aaaa,foo0)
_comb(bbbb,foo0)
_comb(cccc,foo0)
_comb(dddd,foo0)
)
bp(a00)
bp(b00)
bp(c00)
bp(d00)
bp(e00)
bp(f00)
bp(g00)
bp(h00)
bp(i00)
bp(j00)
bp(k00)
bp(l00)
bp(m00)
bp(n00)
bp(o00)
bp(p00)
bp(q00)
bp(r00)
bp(s00)
bp(t00)
bp(u00)
bp(v00)
bp(w00)
EOF"})dnl

View File

@ -0,0 +1,6 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/eval.m4,v 1.1 2004/05/12 21:24:37 espie Exp $
dnl expr parser
eval(224&127)
eval(224|127)
eval(224&&127)

View File

@ -0,0 +1,11 @@
$FreeBSD$
$OpenBSD: src/regress/usr.bin/m4/ff_after_dnl.m4.uu,v 1.1.1.1 2000/07/01 00:31:01 espie Exp $
$NetBSD: ff_after_dnl.m4.uu,v 1.1 1997/12/30 23:30:53 cgd Exp $
begin 644 ff_after_dnl.m4
M"0E42$E3(%-(3U5,1"!32$]7(%50("A,24Y%(#$I"F1N;`D)5$A)4R!32$]5
M3$0@3D]4(%-(3U<@55`@*$Q)3D4@,BD*9&YL_PD)5$A)4R!32$]53$0@3D]4
M(%-(3U<@55`@*$Q)3D4@,RD*9&YL"?\)5$A)4R!32$]53$0@3D]4(%-(3U<@
K55`@*$Q)3D4@-"D*"0E42$E3(%-(3U5,1"!32$]7(%50("A,24Y%(#4I"E<@
`
end

View File

@ -0,0 +1,7 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/gnueval.m4,v 1.1 2012/04/12 16:58:15 espie Exp $
dnl exponentiation is right associative
eval(`4**2**3')
dnl priority between unary operators and *
eval(`4**2*3')
eval(`-4**3')

View File

@ -0,0 +1,2 @@
dnl $FreeBSD$
format(`a%15sa%%b%-15sbc%3scd%-3sd', `string', `pouet', `toolong', `toolong2')

View File

@ -0,0 +1,4 @@
dnl $FreeBSD$
patsubst(`string with a + to replace with a minus', `+', `minus')
patsubst(`string with aaaaa to replace with a b', `a+', `b')
patsubst(`+string with a starting + to replace with a minus', `^+', `minus')

View File

@ -0,0 +1,6 @@
dnl $FreeBSD$
define(`zoinx',dnl
`patsubst($1,\(\w+\)\(\W*\),\1 )')dnl
zoinx(acosl asinl atanl \
cosl sinl tanl \
coshl sinhl tanhl)

View File

@ -0,0 +1,2 @@
dumpdef()
m4_dumpdef()

View File

@ -0,0 +1,4 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/gnusofterror.m4,v 1.1 2012/04/12 16:58:15 espie Exp $
include(`hey I do not exit')dnl
abc

View File

@ -0,0 +1,3 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/includes.aux,v 1.1 2008/08/16 10:02:32 espie Exp $
hello world dnl

View File

@ -0,0 +1,5 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/includes.m4,v 1.1 2008/08/16 10:02:32 espie Exp $
dnl Check that include can occur within parameters
define(`foo', include(includes.aux))dnl
foo

View File

@ -0,0 +1,12 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/m4wrap3.m4,v 1.1 2005/03/02 10:12:41 espie Exp $
dnl Another test, this time for multiple wrappers
dnl Check the behavior in presence of recursive m4wraps
dnl both for POSIX m4 and for gnu-m4 mode
m4wrap(`this is
')dnl
m4wrap(`a string
')dnl
m4wrap(`m4wrap(`recurse
')')dnl
normal m4 stuff

View File

@ -0,0 +1,12 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/patterns.m4,v 1.4 2003/06/08 20:11:45 espie Exp $
patsubst(`quote s in string', `(s)', `\\\1')
patsubst(`check whether subst
over several lines
works as expected', `^', `>>>')
patsubst(`# This is a line to zap
# and a second line
keep this one', `^ *#.*
')
dnl Special case: empty regexp
patsubst(`empty regexp',`',`a ')

View File

@ -0,0 +1,58 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/quotes.m4,v 1.2 2005/09/06 15:33:21 espie Exp $
dnl Checking the way changequote() is supposed to work
define(`string',`STRING')dnl
1: normal
`quoted string'
[quoted string]
normal string
`half quoted string
going up to that string'
2: kill quotes
changequote()dnl
`quoted string'
[quoted string]
normal string
`half quoted string
going up to that string'
3: normal changed quote
changequote([,])dnl
`quoted string'
[quoted string]
normal string
`half quoted string
going up to that string'
4: empty quotes, kill them too
changequote(,)dnl
`quoted string'
[quoted string]
normal string
`half quoted string
going up to that string'
5: start quote only
changequote(`)dnl
`quoted string'
[quoted string]
normal string
`half quoted string
going up to that string'
6: normal quotes are back
changequote
`quoted string'
[quoted string]
normal string
`half quoted string
going up to that string'
7: start quote+empty end quote
changequote([,)dnl
`quoted string'
[quoted string]
normal string
`half quoted string
going up to that string'

View File

@ -0,0 +1,17 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/redef.m4,v 1.2 2001/09/27 22:40:58 espie Exp $
dnl check all properties of builtin are passed on, including args behavior
define(`mybuiltin',defn(`builtin'))dnl
builtin mybuiltin
define(`mydefine',defn(`define'))dnl
mydefine(`mydefn',defn(`defn'))dnl
mydefine(`myundefine',mydefn(`undefine'))dnl
myundefine(`defn')dnl
myundefine(`define')dnl
myundefine(`undefine')dnl
mydefine(`mydef2',mydefn(`mydefine'))dnl
mydefine(`mydef', mydefn(`define'))dnl
myundefine(`mydefine')dnl
mydef2(`A',`B')dnl
mydef(`C',`D')dnl
A C

View File

@ -0,0 +1,3 @@
first form: 1,2,B, second form 1,2,C
first form: 1,2,B, second form 1,2,C
first form: , second form

View File

@ -0,0 +1 @@
( check for embedded spaces)

View File

@ -1,3 +0,0 @@
changecom
# dnl BSD will show this in output.
# dnl SYSV + GNU will not show this.

View File

@ -1,3 +0,0 @@
# dnl BSD will show this in output.
# dnl SYSV + GNU will not show this.

View File

@ -0,0 +1,47 @@
1: normal
# this is a comment
>> this is a COMMENT
'XXX' this is a COMMENT
'XXX' this is a COMMENT q COMMENT too
2: changecom(>>)dnl
# this is a COMMENT
>> this is a comment
'XXX' this is a COMMENT
'XXX' this is a COMMENT q COMMENT too
3: changecom dnl
# this is a COMMENT
>> this is a COMMENT
'XXX' this is a COMMENT
'XXX' this is a COMMENT q COMMENT too
4: changecom()dnl
# this is a COMMENT
>> this is a COMMENT
'XXX' this is a COMMENT
'XXX' this is a COMMENT q COMMENT too
5: changecom(,)dnl
# this is a COMMENT
>> this is a COMMENT
'XXX' this is a COMMENT
'XXX' this is a COMMENT q COMMENT too
6: changecom(`p',q)dnl
# this is a COMMENT
>> this is a COMMENT
p this is a comment
p this is a comment q COMMENT too
7: changecom(`p')dnl
# this is a COMMENT
>> this is a COMMENT
p this is a comment
p this is a comment q comment too
8: changecom(#)dnl
# this is a comment
>> this is a COMMENT
'XXX' this is a COMMENT
'XXX' this is a COMMENT q COMMENT too

View File

@ -0,0 +1,578 @@
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a
hi there a

View File

@ -0,0 +1,3 @@
96
255
1

View File

@ -0,0 +1,2 @@
THIS SHOULD SHOW UP (LINE 1)
THIS SHOULD SHOW UP (LINE 5)

View File

@ -1,2 +0,0 @@
# #

View File

@ -0,0 +1,3 @@
65536
48
-64

View File

@ -0,0 +1 @@
a stringa%bpouet bctoolongcdtoolong2d

View File

@ -0,0 +1,3 @@
string with a minus to replace with a minus
string with b to replbce with b b
minusstring with a starting + to replace with a minus

View File

@ -0,0 +1 @@
acosl asinl atanl cosl sinl tanl coshl sinhl tanhl

View File

@ -0,0 +1,46 @@
`m4_ifelse' `m4_ifelse'
`m4_dnl' `m4_dnl'
`m4_expr' `m4_expr'
`m4_builtin' `m4_builtin'
`m4_popdef' `m4_popdef'
`m4_eval' `m4_eval'
`m4_len' `m4_len'
`m4_indir' `m4_indir'
`m4_sinclude' `m4_sinclude'
`m4_index' `m4_index'
`m4_traceoff' `m4_traceoff'
`m4___file__' `m4___file__'
`m4_unix' `m4_unix'
`m4_mkstemp' `m4_mkstemp'
`m4_changecom' `m4_changecom'
`m4_defn' `m4_defn'
`m4_decr' `m4_decr'
`m4_translit' `m4_translit'
`m4_patsubst' `m4_patsubst'
`m4_dumpdef' `m4_dumpdef'
`m4___line__' `m4___line__'
`m4_esyscmd' `m4_esyscmd'
`m4_traceon' `m4_traceon'
`m4_incr' `m4_incr'
`m4_shift' `m4_shift'
`m4_syscmd' `m4_syscmd'
`m4_include' `m4_include'
`m4_pushdef' `m4_pushdef'
`m4_paste' `m4_paste'
`m4_regexp' `m4_regexp'
`m4_changequote' `m4_changequote'
`m4_undivert' `m4_undivert'
`m4_m4exit' `m4_m4exit'
`m4_substr' `m4_substr'
`m4_m4wrap' `m4_m4wrap'
`m4_ifdef' `m4_ifdef'
`m4_sysval' `m4_sysval'
`m4_divert' `m4_divert'
`m4_maketemp' `m4_maketemp'
`m4_spaste' `m4_spaste'
`m4_define' `m4_define'
`m4_undefine' `m4_undefine'
`m4_divnum' `m4_divnum'
`m4_errprint' `m4_errprint'
dumpdef()

View File

@ -0,0 +1 @@
abc

View File

@ -0,0 +1,6 @@
[HAVE_abc def h/]
[HAVE_abc~def~h/]
ABCDEFGHIJ
ABCDEFGHIJ
ABC-0980-ZYX
ABC-0980-ZYX

View File

@ -0,0 +1 @@
hello world

View File

@ -0,0 +1,4 @@
normal m4 stuff
this is
a string
recurse

View File

@ -0,0 +1,6 @@
quote \s in \string
>>>check whether subst
>>>over several lines
>>>works as expected
keep this one
a ea ma pa ta ya a ra ea ga ea xa p

View File

@ -0,0 +1,49 @@
m4: unclosed quote:
quotes.m4 at line 55
1: normal
quoted string
[quoted STRING]
normal STRING
half quoted string
going up to that string
2: kill quotes
`quoted STRING'
[quoted STRING]
normal STRING
`half quoted STRING
going up to that STRING'
3: normal changed quote
`quoted STRING'
quoted string
normal STRING
`half quoted STRING
going up to that STRING'
4: empty quotes, kill them too
`quoted STRING'
[quoted STRING]
normal STRING
`half quoted STRING
going up to that STRING'
5: start quote only
quoted string'[quoted STRING]
normal STRING
half quoted stringgoing up to that STRING'
6: normal quotes are back
quoted string
[quoted STRING]
normal STRING
half quoted string
going up to that string
7: start quote+empty end quote
`quoted STRING'
quoted string]
normal string
`half quoted string
going up to that string'

View File

@ -0,0 +1,2 @@
builtin mybuiltin
B C

View File

@ -1,41 +1,31 @@
# $FreeBSD$
# Go into the regression test directory, handed to us by make(1)
TESTDIR=$1
if [ -z "$TESTDIR" ]; then
TESTDIR=.
fi
cd $TESTDIR
LC_ALL=C; export LC_ALL
STATUS=0
echo 1..22
echo 1..2
REGRESSION_START($1)
for test in GNU/changecom changecom; do
case "$test" in
GNU/*)
M4="m4 -g"
GNU="g"
test=`basename $test`
;;
*)
M4="m4"
GNU=""
;;
esac
case "$test" in
changecom)
$M4 < regress.$test.in | diff -u regress.$GNU$test.out -
;;
esac
if [ $? -eq 0 ]; then
echo "ok - $test # Test detected no regression, output matches."
else
STATUS=$?
echo "not ok - $test # Test failed: regression detected. See above."
fi
done
exit $STATUS
REGRESSION_TEST(`args', `m4 args.m4')
REGRESSION_TEST(`args2', `m4 args2.m4')
REGRESSION_TEST(`comments', `m4 comments.m4')
REGRESSION_TEST(`esyscmd', `m4 esyscmd.m4')
REGRESSION_TEST(`eval', `m4 eval.m4')
REGRESSION_TEST(`ff_after_dnl', `uudecode -o /dev/stdout ff_after_dnl.m4.uu | m4')
REGRESSION_TEST(`gnueval', `m4 -g gnueval.m4')
REGRESSION_TEST(`gnuformat', `m4 -g gnuformat.m4')
REGRESSION_TEST(`gnupatterns', `m4 -g gnupatterns.m4')
REGRESSION_TEST(`gnupatterns2', `m4 -g gnupatterns2.m4')
REGRESSION_TEST(`gnuprefix', `m4 -P gnuprefix.m4 2>&1')
REGRESSION_TEST(`gnusofterror', `m4 -g gnusofterror.m4')
REGRESSION_TEST(`gnutranslit2', `m4 -g translit2.m4')
REGRESSION_TEST(`includes', `m4 -I. includes.m4')
REGRESSION_TEST(`m4wrap3', `m4 m4wrap3.m4')
REGRESSION_TEST(`patterns', `m4 patterns.m4')
REGRESSION_TEST(`quotes', `m4 quotes.m4 2>&1')
REGRESSION_TEST(`strangequotes', `uudecode -o /dev/stdout strangequotes.m4.uu | m4')
REGRESSION_TEST(`redef', `m4 redef.m4')
REGRESSION_TEST(`translit', `m4 translit.m4')
REGRESSION_TEST(`translit2', `m4 translit2.m4')
REGRESSION_END()

View File

@ -0,0 +1 @@
4 to 5

View File

@ -0,0 +1 @@
onkp

View File

@ -0,0 +1,6 @@
[HAVE_abc def h/]
[HAVE_abc~def~h/]
ABCDEFGHIJ
A12345678J
ABC-0980-ZYX
Abc-0980-Zyx

View File

@ -0,0 +1,8 @@
$FreeBSD$
$OpenBSD: src/regress/usr.bin/m4/strangequotes.m4.uu,v 1.2 2001/09/19 19:15:08 espie Exp $
begin 644 strangequotes.m4
M8VAA;F=E<75O=&4HJRR[*61N;`ID969I;F4HJT&[+""K)#$@=&\@)#*[*61N
*;`I!*#0L(#4I"F4H
`
end

View File

@ -0,0 +1,4 @@
dnl $FreeBSD$
dnl $OpenBSD: src/regress/usr.bin/m4/translit.m4,v 1.1 2010/03/23 20:11:52 espie Exp $
dnl first one should match, not second one
translit(`onk*', `**', `p_')

View File

@ -0,0 +1,9 @@
dnl $FreeBSD$
translit(`[HAVE_abc/def.h
]', `
/.', `/ ')
translit(`[HAVE_abc/def.h=]', `=/.', `/~~')
translit(`0123456789', `0123456789', `ABCDEFGHIJ')
translit(`0123456789', `[0-9]', `[A-J]')
translit(`abc-0980-zyx', `abcdefghijklmnopqrstuvwxyz', `ABCDEFGHIJKLMNOPQRSTUVWXYZ')
translit(`abc-0980-zyx', `[a-z]', `[A-Z]')