m4: Convert tests to ATF

MFC after:	1 week
Sponsored by:	Klara, Inc.
Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D55115
This commit is contained in:
Dag-Erling Smørgrav
2026-02-07 19:16:17 +01:00
parent 1c09ae2be0
commit 16e073df4a
11 changed files with 298 additions and 89 deletions
+3
View File
@@ -51,6 +51,9 @@
# xargs -n1 | sort | uniq -d;
# done
# 20260204: replaced with ATF test
OLD_FILES+=usr/tests/usr.bin/m4/legacy_test
OLD_FILES+=usr/tests/usr.bin/m4/regress.sh
# 20260120: remove obsolete MIT KRB5 plugin files
OLD_LIBS+=usr/lib/krb5/plugins/kdb/db2.so.121
+8 -5
View File
@@ -1,6 +1,6 @@
PACKAGE= tests
TAP_TESTS_SH= legacy_test
ATF_TESTS_SH= m4_test
${PACKAGE}FILES+= args.m4
${PACKAGE}FILES+= args2.m4
@@ -20,6 +20,10 @@ ${PACKAGE}FILES+= m4wrap3.m4
${PACKAGE}FILES+= patterns.m4
${PACKAGE}FILES+= quotes.m4
${PACKAGE}FILES+= redef.m4
${PACKAGE}FILES+= strangequotes.m4.uu
${PACKAGE}FILES+= translit.m4
${PACKAGE}FILES+= translit2.m4
${PACKAGE}FILES+= regress.args.out
${PACKAGE}FILES+= regress.args2.out
${PACKAGE}FILES+= regress.comments.out
@@ -31,19 +35,18 @@ ${PACKAGE}FILES+= regress.gnuformat.out
${PACKAGE}FILES+= regress.gnupatterns.out
${PACKAGE}FILES+= regress.gnupatterns2.out
${PACKAGE}FILES+= regress.gnuprefix.out
${PACKAGE}FILES+= regress.gnuprefix.err
${PACKAGE}FILES+= regress.gnusofterror.out
${PACKAGE}FILES+= regress.gnusofterror.err
${PACKAGE}FILES+= regress.gnutranslit2.out
${PACKAGE}FILES+= regress.includes.out
${PACKAGE}FILES+= regress.m4wrap3.out
${PACKAGE}FILES+= regress.patterns.out
${PACKAGE}FILES+= regress.quotes.out
${PACKAGE}FILES+= regress.quotes.err
${PACKAGE}FILES+= regress.redef.out
${PACKAGE}FILES+= regress.sh
${PACKAGE}FILES+= regress.strangequotes.out
${PACKAGE}FILES+= regress.translit.out
${PACKAGE}FILES+= regress.translit2.out
${PACKAGE}FILES+= strangequotes.m4.uu
${PACKAGE}FILES+= translit.m4
${PACKAGE}FILES+= translit2.m4
.include <bsd.test.mk>
-5
View File
@@ -1,5 +0,0 @@
#!/bin/sh
SRCDIR="$(dirname "${0}")"; export SRCDIR
m4 "${SRCDIR}/../regress.m4" "${SRCDIR}/regress.sh" | sh
+240
View File
@@ -0,0 +1,240 @@
#
# Copyright (c) 2026 Klara, Inc.
#
# SPDX-License-Identifier: BSD-2-Clause
#
m4_test()
{
local dir=$(atf_get_srcdir)
local rc=0
local args opt output script
while getopts "1gP" opt ; do
case ${opt} in
1)
rc=1
;;
*)
args="${args% }-${opt}"
;;
esac
done
shift $((OPTIND - 1))
script=$1
output=$2
if [ -z "${output}" ] ; then
output="${script}"
fi
if [ -f "${dir}/regress.${output}.out" ] ; then
ln -s "${dir}/regress.${output}.out" out
else
atf_fail "regress.${output}.out not found"
fi
if [ -f "${dir}/regress.${output}.err" ] ; then
ln -s "${dir}/regress.${output}.err" err
else
touch err
fi
if [ -f "${dir}/${script}.m4.uu" ] ; then
atf_check uudecode -o "${script}.m4" "${dir}/${script}.m4.uu"
elif [ -f "${dir}/${script}.m4" ] ; then
ln -s "${dir}/${script}.m4" "${script}.m4"
else
atf_fail "${script}.m4 not found"
fi
atf_check -s exit:${rc} -o file:out -e file:err \
m4 -I "${dir}" ${args} "${script}.m4"
}
args_head()
{
}
args_body()
{
m4_test args
}
args2_head()
{
}
args2_body()
{
m4_test args2
}
comments_head()
{
}
comments_body()
{
m4_test comments
}
esyscmd_head()
{
}
esyscmd_body()
{
m4_test esyscmd
}
eval_head()
{
}
eval_body()
{
m4_test eval
}
ff_after_dnl_head()
{
}
ff_after_dnl_body()
{
m4_test ff_after_dnl
}
gnueval_head()
{
}
gnueval_body()
{
m4_test -g gnueval
}
gnuformat_head()
{
}
gnuformat_body()
{
m4_test -g gnuformat
}
gnupatterns_head()
{
}
gnupatterns_body()
{
m4_test -g gnupatterns
}
gnupatterns2_head()
{
}
gnupatterns2_body()
{
m4_test -g gnupatterns2
}
gnuprefix_head()
{
}
gnuprefix_body()
{
m4_test -P gnuprefix
}
gnusofterror_head()
{
}
gnusofterror_body()
{
m4_test -1 -g gnusofterror
}
gnutranslit2_head()
{
}
gnutranslit2_body()
{
m4_test -g translit2 gnutranslit2
}
includes_head()
{
}
includes_body()
{
m4_test includes
}
m4wrap3_head()
{
}
m4wrap3_body()
{
m4_test m4wrap3
}
patterns_head()
{
}
patterns_body()
{
m4_test patterns
}
quotes_head()
{
}
quotes_body()
{
m4_test -1 quotes
}
redef_head()
{
}
redef_body()
{
m4_test redef
}
strangequotes_head()
{
}
strangequotes_body()
{
m4_test strangequotes
}
translit_head()
{
}
translit_body()
{
m4_test translit
}
translit2_head()
{
}
translit2_body()
{
m4_test translit2
}
atf_init_test_cases()
{
atf_add_test_case args
atf_add_test_case args2
atf_add_test_case comments
atf_add_test_case esyscmd
atf_add_test_case eval
atf_add_test_case ff_after_dnl
atf_add_test_case gnueval
atf_add_test_case gnuformat
atf_add_test_case gnupatterns
atf_add_test_case gnupatterns2
atf_add_test_case gnuprefix
atf_add_test_case gnusofterror
atf_add_test_case gnutranslit2
atf_add_test_case includes
atf_add_test_case m4wrap3
atf_add_test_case patterns
atf_add_test_case quotes
atf_add_test_case redef
atf_add_test_case strangequotes
atf_add_test_case translit
atf_add_test_case translit2
}
+44
View File
@@ -0,0 +1,44 @@
`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'
-44
View File
@@ -1,46 +1,2 @@
`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()
@@ -0,0 +1 @@
m4: gnusofterror.m4 at line 2: include(hey I do not exit): No such file or directory
@@ -1,2 +1 @@
m4: gnusofterror.m4 at line 2: include(hey I do not exit): No such file or directory
abc
+2
View File
@@ -0,0 +1,2 @@
m4: unclosed quote:
quotes.m4 at line 54
-2
View File
@@ -1,5 +1,3 @@
m4: unclosed quote:
quotes.m4 at line 54
1: normal
quoted string
[quoted STRING]
-32
View File
@@ -1,32 +0,0 @@
echo 1..21
test_m4() {
m4 "${@}" 2>&1 | sed -e "s,${SRCDIR}/,,g"
}
REGRESSION_START($1)
REGRESSION_TEST(`args', `test_m4 ${SRCDIR}/args.m4')
REGRESSION_TEST(`args2', `test_m4 ${SRCDIR}/args2.m4')
REGRESSION_TEST(`comments', `test_m4 ${SRCDIR}/comments.m4')
REGRESSION_TEST(`esyscmd', `test_m4 ${SRCDIR}/esyscmd.m4')
REGRESSION_TEST(`eval', `test_m4 ${SRCDIR}/eval.m4')
REGRESSION_TEST(`ff_after_dnl', `uudecode -o /dev/stdout ${SRCDIR}/ff_after_dnl.m4.uu | m4')
REGRESSION_TEST(`gnueval', `test_m4 -g ${SRCDIR}/gnueval.m4')
REGRESSION_TEST(`gnuformat', `test_m4 -g ${SRCDIR}/gnuformat.m4')
REGRESSION_TEST(`gnupatterns', `test_m4 -g ${SRCDIR}/gnupatterns.m4')
REGRESSION_TEST(`gnupatterns2', `test_m4 -g ${SRCDIR}/gnupatterns2.m4')
REGRESSION_TEST(`gnuprefix', `test_m4 -P ${SRCDIR}/gnuprefix.m4 2>&1')
REGRESSION_TEST(`gnusofterror', `test_m4 -g ${SRCDIR}/gnusofterror.m4 2>&1')
REGRESSION_TEST(`gnutranslit2', `test_m4 -g ${SRCDIR}/translit2.m4')
REGRESSION_TEST(`includes', `test_m4 -I${SRCDIR} ${SRCDIR}/includes.m4')
REGRESSION_TEST(`m4wrap3', `test_m4 ${SRCDIR}/m4wrap3.m4')
REGRESSION_TEST(`patterns', `test_m4 ${SRCDIR}/patterns.m4')
REGRESSION_TEST(`quotes', `test_m4 ${SRCDIR}/quotes.m4 2>&1')
REGRESSION_TEST(`strangequotes', `uudecode -o /dev/stdout ${SRCDIR}/strangequotes.m4.uu | m4')
REGRESSION_TEST(`redef', `test_m4 ${SRCDIR}/redef.m4')
REGRESSION_TEST(`translit', `test_m4 ${SRCDIR}/translit.m4')
REGRESSION_TEST(`translit2', `test_m4 ${SRCDIR}/translit2.m4')
REGRESSION_END()