git: 16e073df4a33 - main - m4: Convert tests to ATF
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 07 Feb 2026 18:17:04 UTC
The branch main has been updated by des:
URL: https://cgit.FreeBSD.org/src/commit/?id=16e073df4a33646fa0e0fba5b41ddc6b44df3605
commit 16e073df4a33646fa0e0fba5b41ddc6b44df3605
Author: Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2026-02-07 18:16:17 +0000
Commit: Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2026-02-07 18:16:17 +0000
m4: Convert tests to ATF
MFC after: 1 week
Sponsored by: Klara, Inc.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D55115
---
ObsoleteFiles.inc | 3 +
usr.bin/m4/tests/Makefile | 13 +-
usr.bin/m4/tests/legacy_test.sh | 5 -
usr.bin/m4/tests/m4_test.sh | 240 ++++++++++++++++++++++++++++++
usr.bin/m4/tests/regress.gnuprefix.err | 44 ++++++
usr.bin/m4/tests/regress.gnuprefix.out | 44 ------
usr.bin/m4/tests/regress.gnusofterror.err | 1 +
usr.bin/m4/tests/regress.gnusofterror.out | 1 -
usr.bin/m4/tests/regress.quotes.err | 2 +
usr.bin/m4/tests/regress.quotes.out | 2 -
usr.bin/m4/tests/regress.sh | 32 ----
11 files changed, 298 insertions(+), 89 deletions(-)
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index a65251d0a9ee..e131bb0d8a82 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -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
diff --git a/usr.bin/m4/tests/Makefile b/usr.bin/m4/tests/Makefile
index 45245d75e85d..bbf26d4e42d9 100644
--- a/usr.bin/m4/tests/Makefile
+++ b/usr.bin/m4/tests/Makefile
@@ -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>
diff --git a/usr.bin/m4/tests/legacy_test.sh b/usr.bin/m4/tests/legacy_test.sh
deleted file mode 100644
index 3c7842d07bf0..000000000000
--- a/usr.bin/m4/tests/legacy_test.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-SRCDIR="$(dirname "${0}")"; export SRCDIR
-
-m4 "${SRCDIR}/../regress.m4" "${SRCDIR}/regress.sh" | sh
diff --git a/usr.bin/m4/tests/m4_test.sh b/usr.bin/m4/tests/m4_test.sh
new file mode 100644
index 000000000000..671f25ff4673
--- /dev/null
+++ b/usr.bin/m4/tests/m4_test.sh
@@ -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
+}
diff --git a/usr.bin/m4/tests/regress.gnuprefix.err b/usr.bin/m4/tests/regress.gnuprefix.err
new file mode 100644
index 000000000000..8939371e81f4
--- /dev/null
+++ b/usr.bin/m4/tests/regress.gnuprefix.err
@@ -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'
diff --git a/usr.bin/m4/tests/regress.gnuprefix.out b/usr.bin/m4/tests/regress.gnuprefix.out
index 186421d8650b..3e86f4db699c 100644
--- a/usr.bin/m4/tests/regress.gnuprefix.out
+++ b/usr.bin/m4/tests/regress.gnuprefix.out
@@ -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()
diff --git a/usr.bin/m4/tests/regress.gnusofterror.err b/usr.bin/m4/tests/regress.gnusofterror.err
new file mode 100644
index 000000000000..d34464e85791
--- /dev/null
+++ b/usr.bin/m4/tests/regress.gnusofterror.err
@@ -0,0 +1 @@
+m4: gnusofterror.m4 at line 2: include(hey I do not exit): No such file or directory
diff --git a/usr.bin/m4/tests/regress.gnusofterror.out b/usr.bin/m4/tests/regress.gnusofterror.out
index 5c23eb237b6c..8baef1b4abc4 100644
--- a/usr.bin/m4/tests/regress.gnusofterror.out
+++ b/usr.bin/m4/tests/regress.gnusofterror.out
@@ -1,2 +1 @@
-m4: gnusofterror.m4 at line 2: include(hey I do not exit): No such file or directory
abc
diff --git a/usr.bin/m4/tests/regress.quotes.err b/usr.bin/m4/tests/regress.quotes.err
new file mode 100644
index 000000000000..50eb78ca62df
--- /dev/null
+++ b/usr.bin/m4/tests/regress.quotes.err
@@ -0,0 +1,2 @@
+m4: unclosed quote:
+ quotes.m4 at line 54
diff --git a/usr.bin/m4/tests/regress.quotes.out b/usr.bin/m4/tests/regress.quotes.out
index cf34ba42a8d0..df38b6e6cd4d 100644
--- a/usr.bin/m4/tests/regress.quotes.out
+++ b/usr.bin/m4/tests/regress.quotes.out
@@ -1,5 +1,3 @@
-m4: unclosed quote:
- quotes.m4 at line 54
1: normal
quoted string
[quoted STRING]
diff --git a/usr.bin/m4/tests/regress.sh b/usr.bin/m4/tests/regress.sh
deleted file mode 100644
index 39c9103db8d9..000000000000
--- a/usr.bin/m4/tests/regress.sh
+++ /dev/null
@@ -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()