mk-mk.in: EXT_CFLAGS: remove .eh frames!..
[s-mailx.git] / cc-test.sh
blob6d9f909ab2afb136d42768888a71ff2f1e38e3f9
1 #!/bin/sh -
2 #@ Usage: ./cc-test.sh [--check-only]
3 #@ XXX Add tests
5 # NOTE! UnixWare 7.1.4 gives ISO-10646-Minimum-European-Subset for
6 # nl_langinfo(CODESET), then, so also overwrite ttycharset.
7 # (In addition this setup allows us to succeed on TinyCore 4.4 that has no
8 # other locales than C/POSIX installed by default!)
9 LC=en_US.UTF-8
10 LC_ALL=${LC} LANG=${LC}
11 ttycharset=UTF-8
12 export LC_ALL LANG ttycharset
14 MAKE=make
15 NAIL=./s-nail
16 CONF=./conf.rc
18 BODY=./.cc-body.txt
19 MBOX=./.cc-test.mbox
20 ESTAT=0
22 usage() {
23 echo >&2 "Usage: ./cc-test.sh [--check-only [nail-binary]]"
24 exit 1
27 CHECK_ONLY=
28 [ ${#} -gt 0 ] && {
29 [ "${1}" = --check-only ] || usage
30 [ ${#} -gt 2 ] && usage
31 [ ${#} -eq 2 ] && NAIL="${2}"
32 [ -x "${NAIL}" ] || usage
33 CHECK_ONLY=1
36 rm -f "${BODY}" "${MBOX}"
38 # Test all configs TODO doesn't cover all *combinations*, stupid!
39 cc_all_configs() {
40 < ${CONF} awk '
41 BEGIN {i = 0}
42 /^[[:space:]]*WANT_/ {
43 sub(/^[[:space:]]*/, "")
44 sub(/=.*$/, "")
45 data[i++] = $1
47 END {
48 for (j = 0; j < i; ++j) {
49 for (k = 0; k < j; ++k)
50 printf data[k] "=1 "
51 for (k = j; k < i; ++k)
52 printf data[k] "=0 "
53 printf "\n"
54 for (k = 0; k < j; ++k)
55 printf data[k] "=0 "
56 for (k = j; k < i; ++k)
57 printf data[k] "=1 "
58 printf "\n"
61 ' | while read c; do
62 printf "\n\n##########\n$c\n"
63 printf "\n\n##########\n$c\n" >&2
64 sh -c "${MAKE} ${c}"
65 ${MAKE} distclean
66 done
69 # Test a UTF-8 mail as a whole via -t, and in pieces (without -t ;)
70 cksum_test() {
71 f=$1 s=$2 tno=$3
72 [ "`sed -e '/^From /d' -e '/^Date: /d' \
73 -e '/^ boundary=/d' -e /^--=_/d < \"${f}\" | \
74 cksum`" != "${s}" ] && {
75 ESTAT=1
76 echo >&2 "Checksum mismatch test ${tno}: ${f}"
80 test_mail() {
81 [ -n "${CHECK_ONLY}" ] || {
82 printf "\n\n## test_mail() #########################\n\n"
83 "${MAKE}"
86 # Two tests for MIME-CTE and (a bit) content classification
87 rm -f "${MBOX}"
88 < "${BODY}" MAILRC=/dev/null \
89 "${NAIL}" -n -Sstealthmua -a "${BODY}" -s "${SUB}" "${MBOX}"
90 cksum_test "${MBOX}" '2606934084 5649' 1
92 rm -f "${MBOX}"
93 ( echo "To: ${MBOX}" && echo "Subject: ${SUB}" && echo &&
94 cat "${BODY}"
95 ) | MAILRC=/dev/null "${NAIL}" -n -Sstealthmua -a "${BODY}" -t
96 cksum_test "${MBOX}" '799758423 5648' 2
98 # Test for [260e19d]. Juergen Daubert.
99 rm -f "${MBOX}"
100 echo body | MAILRC=/dev/null "${NAIL}" -n -Sstealthmua "${MBOX}"
101 cksum_test "${MBOX}" '506144051 104' 3
103 # Sending of multiple mails in a single invocation
104 rm -f "${MBOX}"
105 ( printf "m ${MBOX}\n~s subject1\nE-Mail Körper 1\n.\n" &&
106 printf "m ${MBOX}\n~s subject2\nEmail body 2\n.\n" &&
107 echo x
108 ) | MAILRC=/dev/null "${NAIL}" -N -n -# -Sstealthmua
109 cksum_test "${MBOX}" '2028749685 277' 4
112 printf \
113 'Ich bin eine DÖS-Datäi mit sehr langen Zeilen und auch '\
114 'sonst bin ich ganz schön am Schleudern, da kannste denke '\
115 "wasde willst, gelle, gelle, gelle, gelle, gelle.\r\n"\
116 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst \r\n"\
117 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 1\r\n"\
118 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 12\r\n"\
119 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 123\r\n"\
120 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 1234\r\n"\
121 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 12345\r\n"\
122 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 123456\r\n"\
123 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 1234567\r\n"\
124 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 12345678\r\n"\
125 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 123456789\r\n"\
126 "Unn ausserdem habe ich trailing SP/HT/SP/HT whitespace \r\n"\
127 "Unn ausserdem habe ich trailing HT/SP/HT/SP whitespace \r\n"\
128 "auf den zeilen vorher.\r\n"\
129 "From am Zeilenbeginn und From der Mitte gibt es auch.\r\n"\
130 ".\r\n"\
131 "Die letzte Zeile war nur ein Punkt.\r\n"\
132 "..\r\n"\
133 "Das waren deren zwei.\r\n"\
134 " \r\n"\
135 "Die letzte Zeile war ein Leerschritt.\n"\
136 "=VIER = EQUAL SIGNS=ON A LINE=\r\n"\
137 "Prösterchen.\r\n"\
138 ".\n"\
139 "Die letzte Zeile war nur ein Punkt, mit Unix Zeilenende.\n"\
140 "..\n"\
141 "Das waren deren zwei. ditto.\n"\
142 "Prösterchen.\n"\
143 "Unn ausseerdem habe ich trailing SP/HT/SP/HT whitespace \n"\
144 "Unn ausseerdem habe ich trailing HT/SP/HT/SP whitespace \n"\
145 "auf den zeilen vorher.\n"\
146 "ditto.\n"\
147 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.\n"\
148 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.1\n"\
149 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.12\n"\
150 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.123\n"\
151 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.1234"\
152 "\n"\
153 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.1234"\
154 "5\n"\
155 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.1234"\
156 "56\n"\
157 "=VIER = EQUAL SIGNS=ON A LINE=\n"\
158 " \n"\
159 "Die letzte Zeile war ein Leerschritt.\n"\
160 ' '\
161 > "${BODY}"
163 SUB='Äbrä Kä?dä=brö Fü?di=bus? '\
164 'adadaddsssssssddddddddddddddddddddd'\
165 'ddddddddddddddddddddddddddddddddddd'\
166 'ddddddddddddddddddddddddddddddddddd'\
167 'dddddddddddddddddddd Hallelulja? Od'\
168 'er?? eeeeeeeeeeeeeeeeeeeeeeeeeeeeee'\
169 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'\
170 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee f'\
171 'fffffffffffffffffffffffffffffffffff'\
172 'fffffffffffffffffffff ggggggggggggg'\
173 'ggggggggggggggggggggggggggggggggggg'\
174 'ggggggggggggggggggggggggggggggggggg'\
175 'ggggggggggggggggggggggggggggggggggg'\
176 'gggggggggggggggg'
178 [ -n "${CHECK_ONLY}" ] || cc_all_configs
179 test_mail
181 [ ${ESTAT} -eq 0 ] && echo Ok || echo >&2 'Errors occurred'
182 [ -n "${CHECK_ONLY}" ] || "${MAKE}" distclean
183 rm -f "${BODY}" "${MBOX}"
185 exit ${ESTAT}
186 # vim:set fenc=utf8:s-it-mode