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