xref: /freebsd/usr.bin/m4/tests/m4_test.sh (revision 25a8168f86a1222388475ce858da405e4d06c1c3)
1#
2# Copyright (c) 2026 Klara, Inc.
3#
4# SPDX-License-Identifier: BSD-2-Clause
5#
6
7m4_test()
8{
9	local dir=$(atf_get_srcdir)
10	local rc=0
11	local args opt output script
12	while getopts "1gP" opt ; do
13		case ${opt} in
14		1)
15			rc=1
16			;;
17		*)
18			args="${args% }-${opt}"
19			;;
20		esac
21	done
22	shift $((OPTIND - 1))
23	script=$1
24	output=$2
25	if [ -z "${output}" ] ; then
26		output="${script}"
27	fi
28	if [ -f "${dir}/regress.${output}.out" ] ; then
29		ln -s "${dir}/regress.${output}.out" out
30	else
31		atf_fail "regress.${output}.out not found"
32	fi
33	if [ -f "${dir}/regress.${output}.err" ] ; then
34		ln -s "${dir}/regress.${output}.err" err
35	else
36		touch err
37	fi
38	if [ -f "${dir}/${script}.m4.uu" ] ; then
39		atf_check uudecode -o "${script}.m4" "${dir}/${script}.m4.uu"
40	elif [ -f "${dir}/${script}.m4" ] ; then
41		ln -s "${dir}/${script}.m4" "${script}.m4"
42	else
43		atf_fail "${script}.m4 not found"
44	fi
45	atf_check -s exit:${rc} -o file:out -e file:err \
46	    m4 -I "${dir}" ${args} "${script}.m4"
47}
48
49args_head()
50{
51}
52args_body()
53{
54	m4_test args
55}
56
57args2_head()
58{
59}
60args2_body()
61{
62	m4_test args2
63}
64
65comments_head()
66{
67}
68comments_body()
69{
70	m4_test comments
71}
72
73defn_head()
74{
75}
76defn_body()
77{
78	m4_test defn
79}
80
81esyscmd_head()
82{
83}
84esyscmd_body()
85{
86	m4_test esyscmd
87}
88
89eval_head()
90{
91}
92eval_body()
93{
94	m4_test eval
95}
96
97ff_after_dnl_head()
98{
99}
100ff_after_dnl_body()
101{
102	m4_test ff_after_dnl
103}
104
105gnueval_head()
106{
107}
108gnueval_body()
109{
110	m4_test -g gnueval
111}
112
113gnuformat_head()
114{
115}
116gnuformat_body()
117{
118	m4_test -g gnuformat
119}
120
121gnupatterns_head()
122{
123}
124gnupatterns_body()
125{
126	m4_test -g gnupatterns
127}
128
129gnupatterns2_head()
130{
131}
132gnupatterns2_body()
133{
134	m4_test -g gnupatterns2
135}
136
137gnuprefix_head()
138{
139}
140gnuprefix_body()
141{
142	m4_test -P gnuprefix
143}
144
145gnusofterror_head()
146{
147}
148gnusofterror_body()
149{
150	m4_test -1 -g gnusofterror
151}
152
153gnutranslit2_head()
154{
155}
156gnutranslit2_body()
157{
158	m4_test -g translit2 gnutranslit2
159}
160
161includes_head()
162{
163}
164includes_body()
165{
166	m4_test includes
167}
168
169m4wrap3_head()
170{
171}
172m4wrap3_body()
173{
174	m4_test m4wrap3
175}
176
177patterns_head()
178{
179}
180patterns_body()
181{
182	m4_test patterns
183}
184
185quotes_head()
186{
187}
188quotes_body()
189{
190	m4_test -1 quotes
191}
192
193redef_head()
194{
195}
196redef_body()
197{
198	m4_test redef
199}
200
201strangequotes_head()
202{
203}
204strangequotes_body()
205{
206	m4_test strangequotes
207}
208
209translit_head()
210{
211}
212translit_body()
213{
214	m4_test translit
215}
216
217translit2_head()
218{
219}
220translit2_body()
221{
222	m4_test translit2
223}
224
225atf_init_test_cases()
226{
227	atf_add_test_case args
228	atf_add_test_case args2
229	atf_add_test_case comments
230	atf_add_test_case defn
231	atf_add_test_case esyscmd
232	atf_add_test_case eval
233	atf_add_test_case ff_after_dnl
234	atf_add_test_case gnueval
235	atf_add_test_case gnuformat
236	atf_add_test_case gnupatterns
237	atf_add_test_case gnupatterns2
238	atf_add_test_case gnuprefix
239	atf_add_test_case gnusofterror
240	atf_add_test_case gnutranslit2
241	atf_add_test_case includes
242	atf_add_test_case m4wrap3
243	atf_add_test_case patterns
244	atf_add_test_case quotes
245	atf_add_test_case redef
246	atf_add_test_case strangequotes
247	atf_add_test_case translit
248	atf_add_test_case translit2
249}
250