xref: /freebsd/usr.bin/m4/tests/m4_test.sh (revision 25a8168f86a1222388475ce858da405e4d06c1c3)
116e073dfSDag-Erling Smørgrav#
216e073dfSDag-Erling Smørgrav# Copyright (c) 2026 Klara, Inc.
316e073dfSDag-Erling Smørgrav#
416e073dfSDag-Erling Smørgrav# SPDX-License-Identifier: BSD-2-Clause
516e073dfSDag-Erling Smørgrav#
616e073dfSDag-Erling Smørgrav
716e073dfSDag-Erling Smørgravm4_test()
816e073dfSDag-Erling Smørgrav{
916e073dfSDag-Erling Smørgrav	local dir=$(atf_get_srcdir)
1016e073dfSDag-Erling Smørgrav	local rc=0
1116e073dfSDag-Erling Smørgrav	local args opt output script
1216e073dfSDag-Erling Smørgrav	while getopts "1gP" opt ; do
1316e073dfSDag-Erling Smørgrav		case ${opt} in
1416e073dfSDag-Erling Smørgrav		1)
1516e073dfSDag-Erling Smørgrav			rc=1
1616e073dfSDag-Erling Smørgrav			;;
1716e073dfSDag-Erling Smørgrav		*)
1816e073dfSDag-Erling Smørgrav			args="${args% }-${opt}"
1916e073dfSDag-Erling Smørgrav			;;
2016e073dfSDag-Erling Smørgrav		esac
2116e073dfSDag-Erling Smørgrav	done
2216e073dfSDag-Erling Smørgrav	shift $((OPTIND - 1))
2316e073dfSDag-Erling Smørgrav	script=$1
2416e073dfSDag-Erling Smørgrav	output=$2
2516e073dfSDag-Erling Smørgrav	if [ -z "${output}" ] ; then
2616e073dfSDag-Erling Smørgrav		output="${script}"
2716e073dfSDag-Erling Smørgrav	fi
2816e073dfSDag-Erling Smørgrav	if [ -f "${dir}/regress.${output}.out" ] ; then
2916e073dfSDag-Erling Smørgrav		ln -s "${dir}/regress.${output}.out" out
3016e073dfSDag-Erling Smørgrav	else
3116e073dfSDag-Erling Smørgrav		atf_fail "regress.${output}.out not found"
3216e073dfSDag-Erling Smørgrav	fi
3316e073dfSDag-Erling Smørgrav	if [ -f "${dir}/regress.${output}.err" ] ; then
3416e073dfSDag-Erling Smørgrav		ln -s "${dir}/regress.${output}.err" err
3516e073dfSDag-Erling Smørgrav	else
3616e073dfSDag-Erling Smørgrav		touch err
3716e073dfSDag-Erling Smørgrav	fi
3816e073dfSDag-Erling Smørgrav	if [ -f "${dir}/${script}.m4.uu" ] ; then
3916e073dfSDag-Erling Smørgrav		atf_check uudecode -o "${script}.m4" "${dir}/${script}.m4.uu"
4016e073dfSDag-Erling Smørgrav	elif [ -f "${dir}/${script}.m4" ] ; then
4116e073dfSDag-Erling Smørgrav		ln -s "${dir}/${script}.m4" "${script}.m4"
4216e073dfSDag-Erling Smørgrav	else
4316e073dfSDag-Erling Smørgrav		atf_fail "${script}.m4 not found"
4416e073dfSDag-Erling Smørgrav	fi
4516e073dfSDag-Erling Smørgrav	atf_check -s exit:${rc} -o file:out -e file:err \
4616e073dfSDag-Erling Smørgrav	    m4 -I "${dir}" ${args} "${script}.m4"
4716e073dfSDag-Erling Smørgrav}
4816e073dfSDag-Erling Smørgrav
4916e073dfSDag-Erling Smørgravargs_head()
5016e073dfSDag-Erling Smørgrav{
5116e073dfSDag-Erling Smørgrav}
5216e073dfSDag-Erling Smørgravargs_body()
5316e073dfSDag-Erling Smørgrav{
5416e073dfSDag-Erling Smørgrav	m4_test args
5516e073dfSDag-Erling Smørgrav}
5616e073dfSDag-Erling Smørgrav
5716e073dfSDag-Erling Smørgravargs2_head()
5816e073dfSDag-Erling Smørgrav{
5916e073dfSDag-Erling Smørgrav}
6016e073dfSDag-Erling Smørgravargs2_body()
6116e073dfSDag-Erling Smørgrav{
6216e073dfSDag-Erling Smørgrav	m4_test args2
6316e073dfSDag-Erling Smørgrav}
6416e073dfSDag-Erling Smørgrav
6516e073dfSDag-Erling Smørgravcomments_head()
6616e073dfSDag-Erling Smørgrav{
6716e073dfSDag-Erling Smørgrav}
6816e073dfSDag-Erling Smørgravcomments_body()
6916e073dfSDag-Erling Smørgrav{
7016e073dfSDag-Erling Smørgrav	m4_test comments
7116e073dfSDag-Erling Smørgrav}
7216e073dfSDag-Erling Smørgrav
73*25a8168fSDag-Erling Smørgravdefn_head()
74*25a8168fSDag-Erling Smørgrav{
75*25a8168fSDag-Erling Smørgrav}
76*25a8168fSDag-Erling Smørgravdefn_body()
77*25a8168fSDag-Erling Smørgrav{
78*25a8168fSDag-Erling Smørgrav	m4_test defn
79*25a8168fSDag-Erling Smørgrav}
80*25a8168fSDag-Erling Smørgrav
8116e073dfSDag-Erling Smørgravesyscmd_head()
8216e073dfSDag-Erling Smørgrav{
8316e073dfSDag-Erling Smørgrav}
8416e073dfSDag-Erling Smørgravesyscmd_body()
8516e073dfSDag-Erling Smørgrav{
8616e073dfSDag-Erling Smørgrav	m4_test esyscmd
8716e073dfSDag-Erling Smørgrav}
8816e073dfSDag-Erling Smørgrav
8916e073dfSDag-Erling Smørgraveval_head()
9016e073dfSDag-Erling Smørgrav{
9116e073dfSDag-Erling Smørgrav}
9216e073dfSDag-Erling Smørgraveval_body()
9316e073dfSDag-Erling Smørgrav{
9416e073dfSDag-Erling Smørgrav	m4_test eval
9516e073dfSDag-Erling Smørgrav}
9616e073dfSDag-Erling Smørgrav
9716e073dfSDag-Erling Smørgravff_after_dnl_head()
9816e073dfSDag-Erling Smørgrav{
9916e073dfSDag-Erling Smørgrav}
10016e073dfSDag-Erling Smørgravff_after_dnl_body()
10116e073dfSDag-Erling Smørgrav{
10216e073dfSDag-Erling Smørgrav	m4_test ff_after_dnl
10316e073dfSDag-Erling Smørgrav}
10416e073dfSDag-Erling Smørgrav
10516e073dfSDag-Erling Smørgravgnueval_head()
10616e073dfSDag-Erling Smørgrav{
10716e073dfSDag-Erling Smørgrav}
10816e073dfSDag-Erling Smørgravgnueval_body()
10916e073dfSDag-Erling Smørgrav{
11016e073dfSDag-Erling Smørgrav	m4_test -g gnueval
11116e073dfSDag-Erling Smørgrav}
11216e073dfSDag-Erling Smørgrav
11316e073dfSDag-Erling Smørgravgnuformat_head()
11416e073dfSDag-Erling Smørgrav{
11516e073dfSDag-Erling Smørgrav}
11616e073dfSDag-Erling Smørgravgnuformat_body()
11716e073dfSDag-Erling Smørgrav{
11816e073dfSDag-Erling Smørgrav	m4_test -g gnuformat
11916e073dfSDag-Erling Smørgrav}
12016e073dfSDag-Erling Smørgrav
12116e073dfSDag-Erling Smørgravgnupatterns_head()
12216e073dfSDag-Erling Smørgrav{
12316e073dfSDag-Erling Smørgrav}
12416e073dfSDag-Erling Smørgravgnupatterns_body()
12516e073dfSDag-Erling Smørgrav{
12616e073dfSDag-Erling Smørgrav	m4_test -g gnupatterns
12716e073dfSDag-Erling Smørgrav}
12816e073dfSDag-Erling Smørgrav
12916e073dfSDag-Erling Smørgravgnupatterns2_head()
13016e073dfSDag-Erling Smørgrav{
13116e073dfSDag-Erling Smørgrav}
13216e073dfSDag-Erling Smørgravgnupatterns2_body()
13316e073dfSDag-Erling Smørgrav{
13416e073dfSDag-Erling Smørgrav	m4_test -g gnupatterns2
13516e073dfSDag-Erling Smørgrav}
13616e073dfSDag-Erling Smørgrav
13716e073dfSDag-Erling Smørgravgnuprefix_head()
13816e073dfSDag-Erling Smørgrav{
13916e073dfSDag-Erling Smørgrav}
14016e073dfSDag-Erling Smørgravgnuprefix_body()
14116e073dfSDag-Erling Smørgrav{
14216e073dfSDag-Erling Smørgrav	m4_test -P gnuprefix
14316e073dfSDag-Erling Smørgrav}
14416e073dfSDag-Erling Smørgrav
14516e073dfSDag-Erling Smørgravgnusofterror_head()
14616e073dfSDag-Erling Smørgrav{
14716e073dfSDag-Erling Smørgrav}
14816e073dfSDag-Erling Smørgravgnusofterror_body()
14916e073dfSDag-Erling Smørgrav{
15016e073dfSDag-Erling Smørgrav	m4_test -1 -g gnusofterror
15116e073dfSDag-Erling Smørgrav}
15216e073dfSDag-Erling Smørgrav
15316e073dfSDag-Erling Smørgravgnutranslit2_head()
15416e073dfSDag-Erling Smørgrav{
15516e073dfSDag-Erling Smørgrav}
15616e073dfSDag-Erling Smørgravgnutranslit2_body()
15716e073dfSDag-Erling Smørgrav{
15816e073dfSDag-Erling Smørgrav	m4_test -g translit2 gnutranslit2
15916e073dfSDag-Erling Smørgrav}
16016e073dfSDag-Erling Smørgrav
16116e073dfSDag-Erling Smørgravincludes_head()
16216e073dfSDag-Erling Smørgrav{
16316e073dfSDag-Erling Smørgrav}
16416e073dfSDag-Erling Smørgravincludes_body()
16516e073dfSDag-Erling Smørgrav{
16616e073dfSDag-Erling Smørgrav	m4_test includes
16716e073dfSDag-Erling Smørgrav}
16816e073dfSDag-Erling Smørgrav
16916e073dfSDag-Erling Smørgravm4wrap3_head()
17016e073dfSDag-Erling Smørgrav{
17116e073dfSDag-Erling Smørgrav}
17216e073dfSDag-Erling Smørgravm4wrap3_body()
17316e073dfSDag-Erling Smørgrav{
17416e073dfSDag-Erling Smørgrav	m4_test m4wrap3
17516e073dfSDag-Erling Smørgrav}
17616e073dfSDag-Erling Smørgrav
17716e073dfSDag-Erling Smørgravpatterns_head()
17816e073dfSDag-Erling Smørgrav{
17916e073dfSDag-Erling Smørgrav}
18016e073dfSDag-Erling Smørgravpatterns_body()
18116e073dfSDag-Erling Smørgrav{
18216e073dfSDag-Erling Smørgrav	m4_test patterns
18316e073dfSDag-Erling Smørgrav}
18416e073dfSDag-Erling Smørgrav
18516e073dfSDag-Erling Smørgravquotes_head()
18616e073dfSDag-Erling Smørgrav{
18716e073dfSDag-Erling Smørgrav}
18816e073dfSDag-Erling Smørgravquotes_body()
18916e073dfSDag-Erling Smørgrav{
19016e073dfSDag-Erling Smørgrav	m4_test -1 quotes
19116e073dfSDag-Erling Smørgrav}
19216e073dfSDag-Erling Smørgrav
19316e073dfSDag-Erling Smørgravredef_head()
19416e073dfSDag-Erling Smørgrav{
19516e073dfSDag-Erling Smørgrav}
19616e073dfSDag-Erling Smørgravredef_body()
19716e073dfSDag-Erling Smørgrav{
19816e073dfSDag-Erling Smørgrav	m4_test redef
19916e073dfSDag-Erling Smørgrav}
20016e073dfSDag-Erling Smørgrav
20116e073dfSDag-Erling Smørgravstrangequotes_head()
20216e073dfSDag-Erling Smørgrav{
20316e073dfSDag-Erling Smørgrav}
20416e073dfSDag-Erling Smørgravstrangequotes_body()
20516e073dfSDag-Erling Smørgrav{
20616e073dfSDag-Erling Smørgrav	m4_test strangequotes
20716e073dfSDag-Erling Smørgrav}
20816e073dfSDag-Erling Smørgrav
20916e073dfSDag-Erling Smørgravtranslit_head()
21016e073dfSDag-Erling Smørgrav{
21116e073dfSDag-Erling Smørgrav}
21216e073dfSDag-Erling Smørgravtranslit_body()
21316e073dfSDag-Erling Smørgrav{
21416e073dfSDag-Erling Smørgrav	m4_test translit
21516e073dfSDag-Erling Smørgrav}
21616e073dfSDag-Erling Smørgrav
21716e073dfSDag-Erling Smørgravtranslit2_head()
21816e073dfSDag-Erling Smørgrav{
21916e073dfSDag-Erling Smørgrav}
22016e073dfSDag-Erling Smørgravtranslit2_body()
22116e073dfSDag-Erling Smørgrav{
22216e073dfSDag-Erling Smørgrav	m4_test translit2
22316e073dfSDag-Erling Smørgrav}
22416e073dfSDag-Erling Smørgrav
22516e073dfSDag-Erling Smørgravatf_init_test_cases()
22616e073dfSDag-Erling Smørgrav{
22716e073dfSDag-Erling Smørgrav	atf_add_test_case args
22816e073dfSDag-Erling Smørgrav	atf_add_test_case args2
22916e073dfSDag-Erling Smørgrav	atf_add_test_case comments
230*25a8168fSDag-Erling Smørgrav	atf_add_test_case defn
23116e073dfSDag-Erling Smørgrav	atf_add_test_case esyscmd
23216e073dfSDag-Erling Smørgrav	atf_add_test_case eval
23316e073dfSDag-Erling Smørgrav	atf_add_test_case ff_after_dnl
23416e073dfSDag-Erling Smørgrav	atf_add_test_case gnueval
23516e073dfSDag-Erling Smørgrav	atf_add_test_case gnuformat
23616e073dfSDag-Erling Smørgrav	atf_add_test_case gnupatterns
23716e073dfSDag-Erling Smørgrav	atf_add_test_case gnupatterns2
23816e073dfSDag-Erling Smørgrav	atf_add_test_case gnuprefix
23916e073dfSDag-Erling Smørgrav	atf_add_test_case gnusofterror
24016e073dfSDag-Erling Smørgrav	atf_add_test_case gnutranslit2
24116e073dfSDag-Erling Smørgrav	atf_add_test_case includes
24216e073dfSDag-Erling Smørgrav	atf_add_test_case m4wrap3
24316e073dfSDag-Erling Smørgrav	atf_add_test_case patterns
24416e073dfSDag-Erling Smørgrav	atf_add_test_case quotes
24516e073dfSDag-Erling Smørgrav	atf_add_test_case redef
24616e073dfSDag-Erling Smørgrav	atf_add_test_case strangequotes
24716e073dfSDag-Erling Smørgrav	atf_add_test_case translit
24816e073dfSDag-Erling Smørgrav	atf_add_test_case translit2
24916e073dfSDag-Erling Smørgrav}
250