2 #@ Synopsis: ./cc-test.sh [--check-only s-mailx-binary]
3 #@ ./cc-test.sh --mae-test s-mailx-binary [:TESTNAME:]
4 #@ The latter generates output files.
5 #@ TODO _All_ the tests should happen in a temporary subdir.
8 # Instead of figuring out the environment in here, require a configured build
9 # system and include that! Our makefile and configure ensure that this test
10 # does not run in the configured, but the user environment nonetheless!
11 if [ -f .
/mk-config.ev
]; then
13 if [ -z "${MAILX__CC_TEST_RUNNING}" ]; then
14 MAILX__CC_TEST_RUNNING
=1
15 export MAILX__CC_TEST_RUNNING
16 exec "${SHELL}" "${0}" "${@}"
19 echo >&2 'S-nail/S-mailx is not configured.'
20 echo >&2 'This test script requires the shell environment that only the'
21 echo >&2 'configuration script can figure out, even if it will be used to'
22 echo >&2 'test a different binary than the one that would be produced!'
26 # We need *stealthmua* regardless of $SOURCE_DATE_EPOCH, the program name as
27 # such is a compile-time variable
28 ARGS
='-:/ -# -Sdotlock-ignore-error -Sexpandaddr=restrict'
29 ARGS
="${ARGS}"' -Smime-encoding=quoted-printable -Snosave -Sstealthmua'
30 ADDARG_UNI
=-Sttycharset=UTF-8
35 #UTF8_LOCALE= autodetected unless set
37 # Note valgrind has problems with FDs in forked childs, which causes some tests
38 # to fail (the FD is rewound and thus will be dumped twice)
40 #MEMTESTER='valgrind --leak-check=full --log-file=.vl-%p '
42 ## -- (>8 -- 8<) -- ##
44 ( set -o noglob
) >/dev
/null
2>&1 && noglob_shell
=1 ||
unset noglob_shell
49 printf >&2 -- "${fmt}\\n" "${@}"
54 export ARGS ADDARG_UNI CONF BODY MBOX MAIL MAKE
awk cat cksum rm sed grep
58 # Wed Oct 2 01:50:07 UTC 1996
59 SOURCE_DATE_EPOCH
=844221007
61 export LC_ALL LANG TZ SOURCE_DATE_EPOCH
62 unset POSIXLY_CORRECT LOGNAME USER
65 echo >&2 "Synopsis: ./cc-test.sh [--check-only s-mailx-binary]"
66 echo >&2 "Synopsis: ./cc-test.sh --mae-test s-mailx-binary [:TESTNAME:]"
70 CHECK_ONLY
= MAE_TEST
= MAILX
=
71 if [ "${1}" = --check-only ]; then
74 [ -x "${MAILX}" ] || usage
76 elif [ "${1}" = --mae-test ]; then
79 [ -x "${MAILX}" ] || usage
83 MAILX
="${MEMTESTER}${MAILX}"
86 if [ -n "${CHECK_ONLY}${MAE_TEST}" ] && [ -z "${UTF8_LOCALE}" ]; then
87 # Try ourselfs for nl_langinfo(CODESET) output first (requires a new version)
88 i
=`LC_ALL=C.utf8 "${RAWMAILX}" ${ARGS} -X '
90 \if [ "${ttycharset}" @i=% utf ]
97 \eval xcall cset_test "${@}"
101 \call cset_test C.UTF-8 POSIX.utf8 POSIX.UTF-8 en_EN.utf8 en_EN.UTF-8 \
102 en_US.utf8 en_US.UTF-8
104 [ $?
-eq 0 ] && UTF8_LOCALE
=$i
106 if [ -z "${UTF8_LOCALE}" ] && (locale yesexpr
) >/dev
/null
2>&1; then
107 UTF8_LOCALE
=`locale -a | { m=
109 if { echo ${n} | ${grep} -i 'utf-\{0,1\}8'; } >/dev/null 2>&1; then
111 if { echo ${n} | ${grep} -e POSIX -e en_EN -e en_US; }; then
125 trap "${rm} -rf \"${BODY}\" \"${MBOX}\" \${TRAP_EXIT_ADDONS}" EXIT
126 trap "exit 1" HUP INT TERM
129 # Test all configs TODO doesn't cover all *combinations*, stupid!
133 NOTME["OPT_AUTOCC"] = 1
134 NOTME["OPT_DEBUG"] = 1
135 NOTME["OPT_DEVEL"] = 1
136 NOTME["OPT_NOEXTMD5"] = 1
137 NOTME["OPT_ASAN_ADDRESS"] = 1
138 NOTME["OPT_ASAN_MEMORY"] = 1
139 NOTME["OPT_FORCED_STACKPROT"] = 1
140 NOTME["OPT_NOMEMDBG"] = 1
141 NOTME["OPT_NYD2"] = 1
144 /^[[:space:]]*OPT_/ {
145 sub(/^[[:space:]]*/, "")
146 # This bails for UnixWare 7.1.4 awk(1), but preceeding = with \
147 # does not seem to be a compliant escape for =
149 $1 = substr($1, 1, index($1, "=") - 1)
155 # Doing this completely sequentially and not doing make distclean in
156 # between runs should effectively result in lesser compilations.
157 # It is completely dumb nonetheless... TODO
158 for (j = 1; j < i; ++j) {
159 for (k = 1; k < j; ++k)
161 for (k = j; k < i; ++k)
163 printf "OPT_AUTOCC=1\n"
165 for (j = 1; j < i; ++j) {
166 for (k = 1; k < j; ++k)
168 for (k = j; k < i; ++k)
170 printf "OPT_AUTOCC=1\n"
173 for (j = 1; j < i; ++j) {
174 for (k = 1; k < j; ++k)
176 for (k = j; k < i; ++k)
178 printf "OPT_AUTOCC=1\n"
179 printf "OPT_DEBUG=1\n"
181 for (j = 1; j < i; ++j) {
182 for (k = 1; k < j; ++k)
184 for (k = j; k < i; ++k)
186 printf "OPT_AUTOCC=1\n"
187 printf "OPT_DEBUG=1\n"
190 printf "CONFIG=NULL OPT_AUTOCC=0\n"
191 printf "CONFIG=NULL OPT_AUTOCC=1\n"
192 printf "CONFIG=NULLI OPT_AUTOCC=0\n"
193 printf "CONFIG=NULLI OPT_AUTOCC=1\n"
194 printf "CONFIG=MINIMAL OPT_AUTOCC=0\n"
195 printf "CONFIG=MINIMAL OPT_AUTOCC=1\n"
196 printf "CONFIG=NETSEND OPT_AUTOCC=0\n"
197 printf "CONFIG=NETSEND OPT_AUTOCC=1\n"
198 printf "CONFIG=MAXIMAL OPT_AUTOCC=0\n"
199 printf "CONFIG=MAXIMAL OPT_AUTOCC=1\n"
200 printf "CONFIG=DEVEL OPT_AUTOCC=0\n"
201 printf "CONFIG=DEVEL OPT_AUTOCC=1\n"
202 printf "CONFIG=ODEVEL OPT_AUTOCC=0\n"
203 printf "CONFIG=ODEVEL OPT_AUTOCC=1\n"
206 printf "\n\n##########\n$c\n"
207 printf "\n\n##########\n$c\n" >&2
208 sh
-c "${MAKE} ${c} all test"
214 ( "${RAWMAILX}" ${ARGS} -X'echo $features' -Xx |
215 ${grep} +${1} ) >/dev
/null
2>&1
219 ${rm} -rf "${BODY}" "${MBOX}" ${TRAP_EXIT_ADDONS}
221 [ ${#} -gt 0 ] && printf '[%s]\n' "${1}"
228 restat
=${?} tid=${1} eestat=${2} f=${3} s=${4}
229 [ "${eestat}" != - ] && [ "${restat}" != "${eestat}" ] &&
230 err
"${tid}" 'unexpected exit status: '"${restat} != ${eestat}"
231 csum
="`${cksum} < ${f}`"
232 if [ "${csum}" = "${s}" ]; then
233 printf '%s: ok\n' "${tid}"
236 printf '%s: error: checksum mismatch (got %s)\n' "${tid}" "${csum}"
238 if [ -n "${MAE_TEST}" ]; then
239 x
=`echo ${tid} | ${tr} "/:=" "__-"`
240 ${cp} -f "${f}" ./mae-test-"${x}"
246 printf '%s: error: %s\n' ${1} "${2}"
250 # $1=test name [$2=status]
252 [ ${#} -gt 1 ] && __qm__=${2}
253 if [ ${__qm__} -ne 0 ]; then
254 err $1 'unexpected non-0 exit status'
256 printf '%s: ok\n' "${1}"
261 # $1=test name [$2=status]
263 [ ${#} -gt 1 ] && __qm__=${2}
264 if [ ${__qm__} -eq 0 ]; then
265 err $1 'unexpected 0 exit status'
267 printf '%s: ok\n' "${1}"
271 if ( [ "$
((1 + 1))" = 2 ] ) >/dev/null 2>&1; then
273 echo "$
((${1} + ${2}))"
277 echo `${awk} 'BEGIN{print '${1}' + '${2}'}'`
281 if ( [ "$
((2 % 3))" = 2 ] ) >/dev/null 2>&1; then
283 echo "$
((${1} % ${2}))"
287 echo `${awk} 'BEGIN{print '${1}' % '${2}'}'`
292 # Basic (easily testable) behaviour tests
294 t_behave_X_opt_input_command_stack
298 t_behave_input_inject_semicolon_seq
299 t_behave_commandalias
303 t_behave_macro_param_shift
314 t_behave_record_a_resend
319 # FIXME t_behave_mlist
322 t_behave_message_injections
323 t_behave_compose_hooks
324 t_behave_mass_recipients
325 t_behave_mime_types_load_control
326 t_behave_lreply_futh_rth_etc
328 t_behave_xxxheads_rfc2047
330 t_behave_iconv_mbyte_base64
331 t_behave_iconv_mainbody
332 t_behave_q_t_etc_opts
337 t_behave_X_opt_input_command_stack() {
338 t_prolog t_behave_X_opt_input_command_stack
340 ${cat} <<- '__EOT' > "${BODY}"
348 echo "define mac1
{";\
349 echo " echo mac1-1 via1 \
$0";\
351 echo " echo mac1-2
";\
353 echo " echo mac1-3
";\
356 echo "define mac2
{";\
357 echo " echo mac2-1 via1 \
$0";\
359 echo " echo mac2-2
";\
365 echo echo 1-1-1 via1 \
$0;\
377 # The -X option supports multiline arguments, and those can internally use
378 # reverse solidus newline escaping. And all -X options are joined...
380 < "${BODY}" ${MAILX} ${ARGS} \
395 echo "define mac1 {";\
396 echo " echo mac1-1 via2 \$0";\
398 echo " echo mac1-2";\
400 echo " echo mac1-3";\
403 echo "define mac2 {";\
404 echo " echo mac2-1 via2 \$0";\
406 echo " echo mac2-2";\
412 echo echo 1-1-1 via2 \$0;\
426 check behave
:x_opt_input_command_stack
0 "${MBOX}" '1786542668 416'
431 t_behave_X_errexit
() {
432 t_prolog t_behave_X_errexit
434 ${cat} <<- '__EOT' > "${BODY}"
440 </dev/null ${MAILX} ${ARGS} -Snomemdebug \
441 -X'echo one' -X' echos nono ' -X'echo two' \
443 check behave:x_errexit-1 0 "${MBOX}" '916157812 53'
445 </dev/null ${MAILX} ${ARGS} -X'source '"${BODY}" -Snomemdebug \
447 check behave:x_errexit-2 0 "${MBOX}" '916157812 53'
449 </dev/null MAILRC="${BODY}" ${MAILX} ${ARGS} -:u
-Snomemdebug \
451 check behave
:x_errexit-3
0 "${MBOX}" '916157812 53'
455 </dev
/null
${MAILX} ${ARGS} -Serrexit -Snomemdebug \
456 -X'echo one' -X' echos nono ' -X'echo two' \
458 check behave
:x_errexit-4
1 "${MBOX}" '2118430867 49'
460 </dev
/null
${MAILX} ${ARGS} -X'source '"${BODY}" -Serrexit -Snomemdebug \
462 check behave:x_errexit-5 1 "${MBOX}" '2118430867 49'
464 </dev/null MAILRC="${BODY}" ${MAILX} ${ARGS} -:u
-Serrexit -Snomemdebug \
466 check behave
:x_errexit-6
1 "${MBOX}" '12955965 172'
468 </dev
/null MAILRC
="${BODY}" ${MAILX} ${ARGS} -:u -Sposix -Snomemdebug \
470 check behave:x_errexit-7 1 "${MBOX}" '12955965 172'
472 ## Repeat 4-7 with ignerr set
474 ${sed} -e 's/^echos /ignerr echos /' < "${BODY}" > "${MBOX}"
476 </dev
/null
${MAILX} ${ARGS} -Serrexit -Snomemdebug \
477 -X'echo one' -X'ignerr echos nono ' -X'echo two' \
479 check behave
:x_errexit-8
0 "${BODY}" '916157812 53'
481 </dev
/null
${MAILX} ${ARGS} -X'source '"${MBOX}" -Serrexit -Snomemdebug \
483 check behave:x_errexit-9 0 "${BODY}" '916157812 53'
485 </dev/null MAILRC="${MBOX}" ${MAILX} ${ARGS} -:u
-Serrexit -Snomemdebug \
487 check behave
:x_errexit-10
0 "${BODY}" '916157812 53'
489 </dev
/null MAILRC
="${MBOX}" ${MAILX} ${ARGS} -:u -Sposix -Snomemdebug \
491 check behave:x_errexit-11 0 "${BODY}" '916157812 53'
496 t_behave_S_freeze() {
497 t_prolog t_behave_S_freeze
501 # Test basic assumption
502 </dev/null MAILRC="${BODY}" ${MAILX} ${ARGS} \
503 -X'echo asksub<$asksub> dietcurd<$dietcurd>' \
505 check behave
:s_freeze-1
0 "${MBOX}" '270686329 21'
508 ${cat} <<- '__EOT' > "${BODY}"
513 </dev/null MAILRC="${BODY}" ${MAILX} ${ARGS} -:u \
514 -Snoasksub -Sasksub -Snoasksub \
515 -X'echo asksub<$asksub>' -X'set asksub' -X'echo asksub<$asksub>' \
517 check behave
:s_freeze-2
0 "${MBOX}" '3182942628 37'
519 ${cat} <<- '__EOT' > "${BODY}"
524 </dev/null MAILRC="${BODY}" ${MAILX} ${ARGS} -:u \
525 -Snoasksub -Sasksub \
526 -X'echo asksub<$asksub>' -X'unset asksub' -X'echo asksub<$asksub>' \
528 check behave
:s_freeze-3
0 "${MBOX}" '2006554293 39'
531 ${cat} <<- '__EOT' > "${BODY}"
532 echo dietcurd<$dietcurd>
534 echo dietcurd<$dietcurd>
536 </dev/null MAILRC="${BODY}" ${MAILX} ${ARGS} -:u \
537 -Sdietcurd=strawberry
-Snodietcurd -Sdietcurd=vanilla \
538 -X'echo dietcurd<$dietcurd>' -X'unset dietcurd' \
539 -X'echo dietcurd<$dietcurd>' \
541 check behave
:s_freeze-4
0 "${MBOX}" '1985768109 65'
543 ${cat} <<- '__EOT' > "${BODY}"
544 echo dietcurd<$dietcurd>
546 echo dietcurd<$dietcurd>
548 </dev/null MAILRC="${BODY}" ${MAILX} ${ARGS} -:u \
549 -Sdietcurd=strawberry
-Snodietcurd \
550 -X'echo dietcurd<$dietcurd>' -X'set dietcurd=vanilla' \
551 -X'echo dietcurd<$dietcurd>' \
553 check behave
:s_freeze-5
0 "${MBOX}" '151574279 51'
555 # TODO once we have a detached one with env=1..
556 if [ -n "`</dev/null ${MAILX} ${ARGS} -X'!echo \$TERM' -Xx`" ]; then
557 echo 'behave:s_freeze-{6,7}: shell sets $TERM, skipped'
559 ${cat} <<- '__EOT' > "${BODY}"
560 !echo "shell says TERM<$TERM>"
562 !echo "shell says TERM<$TERM>"
564 !echo "shell says TERM<$TERM>"
566 !echo "shell says TERM<$TERM>"
568 </dev/null MAILRC="${BODY}" ${MAILX} ${ARGS} -:u \
569 -STERM=strawberry
-SnoTERM -STERM=vanilla \
570 -X'echo mail<$TERM>' -X'unset TERM' \
571 -X'!echo "shell says TERM<$TERM>"' -X'echo TERM<$TERM>' \
573 check behave
:s_freeze-6
0 "${MBOX}" '1211476036 167'
575 ${cat} <<- '__EOT' > "${BODY}"
576 !echo "shell says TERM<$TERM>"
578 !echo "shell says TERM<$TERM>"
580 !echo "shell says TERM<$TERM>"
582 !echo "shell says TERM<$TERM>"
584 </dev/null MAILRC="${BODY}" ${MAILX} ${ARGS} -:u \
585 -STERM=strawberry
-SnoTERM \
586 -X'echo TERM<$TERM>' -X'set TERM=vanilla' \
587 -X'!echo "shell says TERM<$TERM>"' -X'echo TERM<$TERM>' \
589 check behave
:s_freeze-7
0 "${MBOX}" '3365080441 132'
597 t_prolog t_behave_wysh
599 ${cat} <<- '__EOT' > "${BODY}"
618 echo 'a${DIET}b${TIED}c\${DIET}d\${TIED}e' # COMMENT
619 echo "a${DIET}b${TIED}c\${DIET}d\${TIED}e"
620 echo $'a${DIET}b${TIED}c\${DIET}d\${TIED}e'
622 echo a$'\101\0101\x41\u0041\u41\U00000041\U41'c
623 echo a$'\u0041\u41\u0C1\U00000041\U41'c
646 echo a$'b\U0000000'dt
647 echo a$'b\U00000000'du
657 if [ -z "${UTF8_LOCALE}" ]; then
658 echo 'Skip behave:wysh_unicode, no UTF8_LOCALE'
660 < "${BODY}" DIET=CURD TIED= \
661 LC_ALL=${UTF8_LOCALE} ${MAILX} ${ARGS} 2>/dev/null > "${MBOX}"
662 check behave:wysh_unicode 0 "${MBOX}" '475805847 317'
665 < "${BODY}" DIET=CURD TIED= ${MAILX} ${ARGS} > "${MBOX}" 2>/dev/null
666 check behave:wysh_c 0 "${MBOX}" '1473887148 321'
671 t_behave_input_inject_semicolon_seq() {
672 t_prolog t_behave_input_inject_semicolon_seq
674 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}"
679 echon this_is_mymac;call mydeepmac;echon ';';
681 echon one';';call mymac;echon two";";call mymac;echo three$';';
683 echon this_is_mymac;call mydeepmac;echon ,TOO'!;';
685 echon one';';call mymac;echon two";";call mymac;echo three$';';
688 check behave:input_inject_semicolon_seq 0 "${MBOX}" '512117110 140'
693 t_behave_commandalias() {
694 t_prolog t_behave_commandalias
696 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}"
697 commandalias echo echo hoho
701 commandalias XxX XxXx
702 commandalias XxXx XxXxX
703 commandalias XxXxX XxXxXx
704 commandalias XxXxXx echo huhu
705 commandalias XxXxXxX echo huhu
707 commandalias XxXxXx XxXxXxX
710 commandalias XxXxXx echo huhu
714 check behave:commandalias 0 "${MBOX}" '3694143612 31'
720 t_prolog t_behave_ifelse
722 # Nestable conditions test
723 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}"
745 if $dietcurd == 'yoho'
750 if $dietcurd @== 'Yoho'
755 if $dietcurd == 'Yoho'
760 if $dietcurd != 'yoho'
765 if $dietcurd @!= 'Yoho'
770 if $dietcurd != 'Yoho'
831 if $dietcurd == 'yohu'
833 elif $dietcurd == 'yoha'
835 elif $dietcurd == 'yohe'
837 elif $dietcurd == 'yoho'
839 if $dietcurd == 'yohu'
841 elif $dietcurd == 'yoha'
843 elif $dietcurd == 'yohe'
845 elif $dietcurd == 'yoho'
847 if $dietcurd == 'yohu'
849 elif $dietcurd == 'yoha'
851 elif $dietcurd == 'yohe'
853 elif $dietcurd == 'yoho'
1002 set diet=abc curd=abc
1008 set diet=abc curd=abcd
1014 # 1. Shitty grouping capabilities as of today
1015 unset diet curd ndefined
1016 if [ [ false ] || [ false ] || [ true ] ] && [ [ false ] || [ true ] ] && \
1022 if [ [ [ [ 0 ] || [ 1 ] ] && [ [ 1 ] || [ 0 ] ] ] && [ 1 ] ] && [ yes ]
1027 if [ [ 1 ] || [ 0 ] || [ 0 ] || [ 0 ] ]
1032 if [ [ 1 ] || [ 0 ] || [ 0 ] || [ 0 ] || [ [ 1 ] ] ]
1037 if [ [ 1 ] || [ 0 ] || [ 0 ] || [ 0 ] || [ [ 1 ] ] || [ 1 ] ] && [ no ]
1042 if [ [ 1 ] || [ 0 ] || [ 0 ] || [ 0 ] || [ [ 1 ] ] || [ 1 ] ] \
1043 && [ no ] || [ yes ]
1048 if [ [ [ [ [ [ [ 1 ] ] && [ 1 ] ] && [ 1 ] ] && [ 1 ] ] ] && [ 1 ] ]
1053 if [ [ [ [ [ [ [ 1 ] ] && [ 1 ] ] && [ 1 ] ] && [ 1 ] ] ] && [ 0 ] ]
1058 if [ [ [ [ [ [ [ 1 ] ] && [ 1 ] ] && [ 0 ] ] && [ 1 ] ] ] && [ 1 ] ]
1063 if [ [ [ [ [ [ [ 0 ] ] && [ 1 ] ] && [ 1 ] ] && [ 1 ] ] ] && [ 1 ] ]
1068 if [ 1 ] || [ 0 ] || [ 0 ] || [ 0 ] && [ 0 ]
1073 if [ 1 ] || [ 0 ] || [ 0 ] || [ 0 ] && [ 1 ]
1078 if [ 0 ] || [ 0 ] || [ 0 ] || [ 1 ] && [ 0 ]
1083 if [ 0 ] || [ 0 ] || [ 0 ] || [ 1 ] && [ 1 ]
1088 if [ 0 ] || [ 0 ] || [ 0 ] || [ 1 ] && [ 0 ] || [ 1 ] && [ 0 ]
1093 if [ 0 ] || [ 0 ] || [ 0 ] || [ 1 ] && [ 0 ] || [ 1 ] && [ 1 ]
1099 if [ [ $diet == 'yo' ] && [ $curd == 'ho' ] ] && [ $ndefined ]
1105 if [ [ $diet == 'yo' ] && [ $curd == 'ho' ] ] && [ $ndefined ]
1110 # 2. Shitty grouping capabilities as of today
1111 unset diet curd ndefined
1112 if [ false || false || true ] && [ false || true ] && yes
1117 if [ [ [ 0 || 1 ] && [ 1 || 0 ] ] && 1 ] && [ yes ]
1122 if [ 1 || 0 || 0 || 0 ]
1127 if [ 1 || 0 || 0 || 0 || [ 1 ] ]
1132 if [ 1 || 0 || 0 || 0 || [ 1 ] || 1 ] && no
1137 if [ 1 || 0 || 0 || 0 || 1 || [ 1 ] ] && no || [ yes ]
1142 if [ [ [ [ [ [ 1 ] && 1 ] && 1 ] && 1 ] ] && [ 1 ] ]
1147 if [ [ [ [ [ [ 1 ] && 1 ] && 1 ] && [ 1 ] ] ] && 0 ]
1152 if [ [ [ [ [ [ [ 1 ] ] && 1 ] && 0 ] && [ 1 ] ] ] && 1 ]
1157 if [ [ [ [ [ [ 0 ] && 1 ] && 1 ] && 1 ] ] && 1 ]
1162 if 1 || 0 || 0 || 0 && 0
1167 if 1 || 0 || 0 || 0 && 1
1172 if 0 || 0 || 0 || 1 && 0
1177 if 0 || 0 || 0 || 1 && 1
1182 if 0 || 0 || 0 || 1 && 0 || 1 && 0
1187 if 0 || 0 || 0 || 1 && 0 || 1 && 1
1193 if [ $diet == 'yo' && $curd == 'ho' ] && $ndefined
1198 if $diet == 'yo' && $curd == 'ho' && $ndefined
1204 if [ $diet == 'yo' && $curd == 'ho' ] && $ndefined
1209 if $diet == 'yo' && $curd == 'ho' && $ndefined
1214 if [ [ [ [ [ [ $diet == 'yo' && $curd == 'ho' && $ndefined ] ] ] ] ] ]
1219 # Some more en-braced variables
1221 if ${diet} == ${curd}
1226 if ${diet} != ${curd}
1242 if ! 0 && ! ! 1 && ! ! ! ! 2 && 3
1247 if ! 0 && ! [ ! 1 ] && ! [ ! [ ! [ ! 2 ] ] ] && 3
1252 if [ ! 0 ] && [ ! [ ! 1 ] ] && [ ! [ ! [ ! [ ! [ 2 ] ] ] ] ] && 3
1257 if [ ! 0 ] && [ ! [ ! 1 ] ] && [ ! [ ! [ ! [ ! [ 2 ] ] ] ] ] && ! 3
1262 if [ ! 0 ] && [ ! [ ! 1 ] ] && ! [ [ ! [ ! [ ! [ 2 ] ] ] ] ] && ! 3
1267 if [ ! 0 ] && ! [ ! [ ! 1 ] ] && [ ! [ ! [ ! [ ! [ 2 ] ] ] ] ] && 3
1272 if ! [ ! 0 ] && [ ! [ ! 1 ] ] && [ ! [ ! [ ! [ ! [ 2 ] ] ] ] ] && 3
1277 if [ ! 0 ] && [ ! [ ! 1 ] ] && [ ! [ ! [ ! [ ! [ 2 ] ] ] ] ] || 3
1282 if [ ! 0 ] && [ ! ! [ ! ! 1 ] ] && [ ! ! [ ! ! [ ! ! [ ! ! [ 2 ] ] ] ] ]
1288 if ! 0 && ! ! 1 && ! ! ! 0 && 3
1293 if ! 0 && ! [ ! 1 ] && ! [ ! [ ! [ 0 ] ] ] && 3
1298 if [ ! 0 ] && [ ! [ ! 1 ] ] && [ ! [ ! [ ! [ [ 0 ] ] ] ] ] && 3
1303 if [ ! 0 ] && [ ! [ ! 1 ] ] && [ ! [ ! ! [ ! [ ! 0 ] ] ] ] && ! 3
1308 if [ ! 0 ] && [ ! [ ! 1 ] ] && ! [ ! [ ! [ ! [ ! 0 ] ] ] ] && 3
1313 if [ ! 0 ] && ! [ ! [ ! 1 ] ] && [ ! ! [ ! [ ! [ ! [ 0 ] ] ] ] ] && 3
1318 if ! [ ! 0 ] && [ ! [ ! 1 ] ] && [ ! [ ! [ ! [ ! ! 0 ] ] ] ] && 3
1323 if [ ! 0 ] && [ ! [ ! 1 ] ] && [ ! [ ! [ ! [ ! [ ! 0 ] ] ] ] ] || 3
1328 if [ ! 0 ] && [ ! ! [ ! ! 1 ] ] && [ ! ! [ ! ! [ ! ! [ ! [ 0 ] ] ] ] ]
1335 check behave:if-normal 0 "${MBOX}" '1688759742 719'
1337 if have_feat regex; then
1338 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}"
1340 if $dietcurd =~ '^yo.*'
1345 if $dietcurd =~ '^Yo.*'
1350 if $dietcurd @=~ '^Yo.*'
1355 if $dietcurd =~ '^yOho.+'
1360 if $dietcurd @!~ '.*Ho$'
1365 if $dietcurd !~ '.+yohO$'
1370 if [ $dietcurd @i!~ '.+yoho$' ]
1375 if ! [ $dietcurd @i=~ '.+yoho$' ]
1380 if ! ! [ $dietcurd @i!~ '.+yoho$' ]
1385 if ! [ ! [ $dietcurd @i!~ '.+yoho$' ] ]
1390 if [ ! [ ! [ $dietcurd @i!~ '.+yoho$' ] ] ]
1395 if ! [ ! [ ! [ $dietcurd !~ '.+yoho$' ] ] ]
1400 if ! ! ! $dietcurd !~ '.+yoho$'
1405 if ! ! ! $dietcurd =~ '.+yoho$'
1410 if ! [ ! ! [ ! [ $dietcurd !~ '.+yoho$' ] ] ]
1415 set diet=abc curd='^abc$'
1421 set diet=abc curd='^abcd$'
1429 check behave:if-regex 0 "${MBOX}" '1115671789 95'
1431 printf 'behave:if-regex: unsupported, skipped\n'
1437 t_behave_localopts() {
1438 t_prolog t_behave_localopts
1440 # Nestable conditions test
1441 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" 2>&1
1456 echo $gv1 $lv1 ${lv2} ${lv3} ${gv2}, $t2
1461 echo $gv1 $lv1 ${lv2} ${lv3} ${gv2}, $t2
1462 echo "$gv1 $lv1 ${lv2} ${lv3} ${gv2}, $t2"
1471 echo active trouble: $gv1 $lv1 ${lv2} ${lv3} ${gv2}, $t3
1473 echo active null: $gv1 $lv1 ${lv2} ${lv3} ${gv2}, $t3
1482 wysh set y=$1; shift; eval localopts $y; localopts $1; shift
1489 wysh set y=$1; shift; eval localopts $y; localopts $1; shift
1496 echo ----- $1: $2 -> $3 -> $4
1504 call llx
'call off' on on on
1505 call llx
'call off' off on on
1506 call llx
'call off' on off on
1507 call llx
'call off' on off off
1508 localopts call-fixate on
1509 call llx
'call-fixate on' on on on
1510 call llx
'call-fixate on' off on on
1511 call llx
'call-fixate on' on off on
1512 call llx
'call-fixate on' on off off
1513 unset x
;localopts call on
1514 call llx
'call on' on on on
1515 call llx
'call on' off on on
1516 call llx
'call on' on off on
1517 call llx
'call on' on off off
1522 check behave
:localopts
0 "${MBOX}" '4016155249 1246'
1528 t_prolog t_behave_local
1530 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" 2>&1
1558 echo ------- global-1 du=$du
1560 echo ------- global-2 du=$du
1563 echo ------- global-3 du=$du
1565 echo ------- global-4 du=$du
1567 echo ------- global-5 du=$du
1570 check behave:local-1 0 "${MBOX}" '2411598140 641'
1575 t_behave_macro_param_shift() {
1576 t_prolog t_behave_macro_param_shift
1578 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" 2>/dev
/null
1581 echo t2.0 has
$#/${#} parameters: "$1,${2},$3" (${*}) [$@
]
1586 echo t2.1 has
$#/${#} parameters: "$1,${2},$3" (${*}) [$@
]
1587 if [ $# > 1 ] ||
[ $ignerr == '' ]
1592 echo t2.2
:$? has
$#/${#} parameters: "$1,${2},$3" (${*}) [$@
]
1594 echo t2.3
:$? has
$#/${#} parameters: "$1,${2},$3" (${*}) [$@
]
1598 echo t2.4
:$? has
$#/${#} parameters: "$1,${2},$3" (${*}) [$@
]
1603 call t2
1 you get four args
1604 echo t1.1
: $?
';' ignerr
($ignerr) should not exist
1605 call t2
1 you get
'three args'
1606 echo t1.2
: $?
';' ignerr
($ignerr) should not exist
1607 call t2
1 you
'get two args'
1608 echo t1.3
: $?
';' ignerr
($ignerr) should not exist
1609 call t2
1 'you get one arg'
1610 echo t1.4
: $?
';' ignerr
($ignerr) should not exist
1611 ignerr call t2
'' 'you get one arg'
1612 echo t1.5
: $?
';' ignerr
($ignerr) should not exist
1617 check behave
:macro_param_shift
0 "${MBOX}" '1402489146 1682'
1622 t_behave_addrcodec
() {
1623 t_prolog t_behave_addrcodec
1625 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" 2>&1
1626 vput addrcodec res e 1 <doog@def>
1627 echo $?/$^ERRNAME $res
1628 eval vput addrcodec res d $res
1629 echo $?/$^ERRNAME $res
1630 vput addrcodec res e 2 . <doog@def>
1631 echo $?/$^ERRNAME $res
1632 eval vput addrcodec res d $res
1633 echo $?/$^ERRNAME $res
1634 vput addrcodec res e 3 Sauer Dr. <doog@def>
1635 echo $?/$^ERRNAME $res
1636 eval vput addrcodec res d $res
1637 echo $?/$^ERRNAME $res
1638 vput addrcodec res e 3.50 Sauer (Ma) Dr. <doog@def>
1639 echo $?/$^ERRNAME $res
1640 eval vput addrcodec res d $res
1641 echo $?/$^ERRNAME $res
1642 vput addrcodec res e 3.51 Sauer (Ma) "Dr.
" <doog@def>
1643 echo $?/$^ERRNAME $res
1644 eval vput addrcodec res d $res
1645 echo $?/$^ERRNAME $res
1647 vput addrcodec res +e 4 Sauer (Ma) Dr. <doog@def>
1648 echo $?/$^ERRNAME $res
1649 eval vput addrcodec res d $res
1650 echo $?/$^ERRNAME $res
1651 vput addrcodec res +e 5 Sauer (Ma) Braten Dr. <doog@def>
1652 echo $?/$^ERRNAME $res
1653 eval vput addrcodec res d $res
1654 echo $?/$^ERRNAME $res
1655 vput addrcodec res +e 6 Sauer (Ma) Braten Dr. (Heu) <doog@def>
1656 echo $?/$^ERRNAME $res
1657 eval vput addrcodec res d $res
1658 echo $?/$^ERRNAME $res
1659 vput addrcodec res +e 7 Sauer (Ma) Braten Dr. (Heu) <doog@def> (bu)
1660 echo $?/$^ERRNAME $res
1661 eval vput addrcodec res d $res
1662 echo $?/$^ERRNAME $res
1663 vput addrcodec res +e 8 \
1664 Dr. Sauer (Ma) Braten Dr. (Heu) <doog@def> (bu) Boom. Boom
1665 echo $?/$^ERRNAME $res
1666 eval vput addrcodec res d $res
1667 echo $?/$^ERRNAME $res
1668 vput addrcodec res +e 9 Dr.Sauer(Ma)Braten Dr. (Heu) <doog@def>
1669 echo $?/$^ERRNAME $res
1670 eval vput addrcodec res d $res
1671 echo $?/$^ERRNAME $res
1672 vput addrcodec res +e 10 (Ma)Braten Dr. (Heu) <doog@def>
1673 echo $?/$^ERRNAME $res
1674 eval vput addrcodec res d $res
1675 echo $?/$^ERRNAME $res
1676 vput addrcodec res +e 11 (Ma)Braten Dr".
" (Heu) <doog@def>
1677 echo $?/$^ERRNAME $res
1678 eval vput addrcodec res d $res
1679 echo $?/$^ERRNAME $res
1680 vput addrcodec res +e 12 Dr. Sauer (Ma) Braten Dr. (u) <doog@def>
1681 echo $?/$^ERRNAME $res
1682 eval vput addrcodec res d $res
1683 echo $?/$^ERRNAME $res
1684 vput addrcodec res +e 13(Ma)Braten Dr. (Heu) <doog@def>
1685 echo $?/$^ERRNAME $res
1686 eval vput addrcodec res d $res
1687 echo $?/$^ERRNAME $res
1688 vput addrcodec res +e 14 Hey, Du <doog@def> Wie() findet Dr. das? ()
1689 echo $?/$^ERRNAME $res
1690 eval vput addrcodec res d $res
1691 echo $?/$^ERRNAME $res
1692 vput addrcodec res +e 15 \
1693 Hey, Du <doog@def> Wie() findet "" Dr. "" das? ()
1694 echo $?/$^ERRNAME $res
1695 eval vput addrcodec res d $res
1696 echo $?/$^ERRNAME $res
1697 vput addrcodec res +e 16 \
1698 "Hey
," "Du
" <doog@def> "Wie
()" findet "" Dr. "" das? ()
1699 echo $?/$^ERRNAME $res
1700 eval vput addrcodec res d $res
1701 echo $?/$^ERRNAME $res
1702 vput addrcodec res +e 17 \
1703 "Hey
" Du <doog@def> "Wie
() findet
" " Dr.
""" das? ()
1704 echo $?/$^ERRNAME $res
1705 eval vput addrcodec res d $res
1706 echo $?/$^ERRNAME $res
1707 vput addrcodec res +e 18 \
1708 <doog@def> "Hey
" Du "Wie
() findet
" " Dr.
""" das? ()
1709 echo $?/$^ERRNAME $res
1710 eval vput addrcodec res d $res
1711 echo $?/$^ERRNAME $res
1712 vput addrcodec res +e 19 Hey\,\" <doog@def> "Wie
()" findet \" Dr. \" das?
1713 echo $?/$^ERRNAME $res
1714 eval vput addrcodec res d $res
1715 echo $?/$^ERRNAME $res
1717 vput addrcodec res ++e 20 Hey\,\" <doog@def> "Wie
()" findet \" Dr. \" das?
1718 echo $?/$^ERRNAME $res
1719 vput addrcodec res ++e 21 Hey\,\"" <doog@def
> "Wie()" findet
\" Dr.
\" das?
1720 echo $?
/$^ERRNAME
$res
1721 eval vput addrcodec res d
$res
1722 echo $?
/$^ERRNAME
$res
1724 vput addrcodec res
+++e
22 Hey
\\,\" <doog@def
> "Wie()" findet
\" Dr.
\" das?
1725 echo $?
/$^ERRNAME
$res
1726 eval vput addrcodec res d
$res
1727 echo $?
/$^ERRNAME
$res
1729 vput addrcodec res s \
1730 "23 Hey\\,\\\" \"Wie" () "\" findet \\\" Dr. \\\" das?" <doog@def
>
1731 echo $?
/$^ERRNAME
$res
1733 # Fix for [f3852f88]
1734 vput addrcodec res
++e
<from2@exam.ple
> 100 (comment
) "Quot(e)d"
1735 echo $?
/$^ERRNAME
$res
1736 eval vput addrcodec res d
$res
1737 echo $?
/$^ERRNAME
$res
1738 vput addrcodec res e
<from2@exam.ple
> 100 (comment
) "Quot(e)d"
1739 echo $?
/$^ERRNAME
$res
1740 eval vput addrcodec res d
$res
1741 echo $?
/$^ERRNAME
$res
1744 check behave
:addrcodec-1
0 "${MBOX}" '1047317989 2612'
1746 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" 2>&1
1748 mlsubscribe isa2@list
1750 vput addrcodec res skin Hey\\,\" <isa0@list> "Wie
()" find \" Dr. \" das?
1751 echo $?/$^ERRNAME $res
1752 vput addrcodec res skinlist Hey\\,\" <isa0@list> "Wie
()" find \" Dr. \" das?
1753 echo $?/$^ERRNAME $res
1754 vput addrcodec res skin Hey\\,\" <isa1@list> "Wie
()" find \" Dr. \" das?
1755 echo $?/$^ERRNAME $res
1756 vput addrcodec res skinlist Hey\\,\" <isa1@list> "Wie
()" find \" Dr. \" das?
1757 echo $?/$^ERRNAME $res
1758 vput addrcodec res skin Hey\\,\" <isa2@list> "Wie
()" find \" Dr. \" das?
1759 echo $?/$^ERRNAME $res
1760 vput addrcodec res skinlist Hey\\,\" <isa2@list> "Wie
()" find \" Dr. \" das?
1761 echo $?/$^ERRNAME $res
1764 check behave:addrcodec-2 0 "${MBOX}" '1391779299 104'
1770 t_prolog t_behave_vexpr
1772 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" 2>/dev
/null
1773 vput vexpr res
= 9223372036854775807
1774 echo $?
/$^ERRNAME
$res
1775 vput vexpr res
= 9223372036854775808
1776 echo $?
/$^ERRNAME
$res
1777 vput vexpr res
=@
9223372036854775808
1778 echo $?
/$^ERRNAME
$res
1779 vput vexpr res
= -9223372036854775808
1780 echo $?
/$^ERRNAME
$res
1781 vput vexpr res
= -9223372036854775809
1782 echo $?
/$^ERRNAME
$res
1783 vput vexpr res
=@
-9223372036854775809
1784 echo $?
/$^ERRNAME
$res
1787 echo $?
/$^ERRNAME
$res
1789 echo $?
/$^ERRNAME
$res
1791 echo $?
/$^ERRNAME
$res
1793 vput vexpr res
+ 0 0
1794 echo $?
/$^ERRNAME
$res
1795 vput vexpr res
+ 0 1
1796 echo $?
/$^ERRNAME
$res
1797 vput vexpr res
+ 1 1
1798 echo $?
/$^ERRNAME
$res
1800 vput vexpr res
+ 9223372036854775807 0
1801 echo $?
/$^ERRNAME
$res
1802 vput vexpr res
+ 9223372036854775807 1
1803 echo $?
/$^ERRNAME
$res
1804 vput vexpr res
+@
9223372036854775807 1
1805 echo $?
/$^ERRNAME
$res
1806 vput vexpr res
+ 0 9223372036854775807
1807 echo $?
/$^ERRNAME
$res
1808 vput vexpr res
+ 1 9223372036854775807
1809 echo $?
/$^ERRNAME
$res
1810 vput vexpr res
+@
1 9223372036854775807
1811 echo $?
/$^ERRNAME
$res
1813 vput vexpr res
+ -9223372036854775808 0
1814 echo $?
/$^ERRNAME
$res
1815 vput vexpr res
+ -9223372036854775808 -1
1816 echo $?
/$^ERRNAME
$res
1817 vput vexpr res
+@
-9223372036854775808 -1
1818 echo $?
/$^ERRNAME
$res
1819 vput vexpr res
+ 0 -9223372036854775808
1820 echo $?
/$^ERRNAME
$res
1821 vput vexpr res
+ -1 -9223372036854775808
1822 echo $?
/$^ERRNAME
$res
1823 vput vexpr res
+@
-1 -9223372036854775808
1824 echo $?
/$^ERRNAME
$res
1826 vput vexpr res
- 0 0
1827 echo $?
/$^ERRNAME
$res
1828 vput vexpr res
- 0 1
1829 echo $?
/$^ERRNAME
$res
1830 vput vexpr res
- 1 1
1831 echo $?
/$^ERRNAME
$res
1833 vput vexpr res
- 9223372036854775807 0
1834 echo $?
/$^ERRNAME
$res
1835 vput vexpr res
- 9223372036854775807 -1
1836 echo $?
/$^ERRNAME
$res
1837 vput vexpr res
-@
9223372036854775807 -1
1838 echo $?
/$^ERRNAME
$res
1839 vput vexpr res
- 0 9223372036854775807
1840 echo $?
/$^ERRNAME
$res
1841 vput vexpr res
- -1 9223372036854775807
1842 echo $?
/$^ERRNAME
$res
1843 vput vexpr res
- -2 9223372036854775807
1844 echo $?
/$^ERRNAME
$res
1845 vput vexpr res
-@
-2 9223372036854775807
1846 echo $?
/$^ERRNAME
$res
1848 vput vexpr res
- -9223372036854775808 +0
1849 echo $?
/$^ERRNAME
$res
1850 vput vexpr res
- -9223372036854775808 +1
1851 echo $?
/$^ERRNAME
$res
1852 vput vexpr res
-@
-9223372036854775808 +1
1853 echo $?
/$^ERRNAME
$res
1854 vput vexpr res
- 0 -9223372036854775808
1855 echo $?
/$^ERRNAME
$res
1856 vput vexpr res
- +1 -9223372036854775808
1857 echo $?
/$^ERRNAME
$res
1858 vput vexpr res
-@
+1 -9223372036854775808
1859 echo $?
/$^ERRNAME
$res
1861 vput vexpr res
+ -13 -2
1862 echo $?
/$^ERRNAME
$res
1863 vput vexpr res
- 0 0
1864 echo $?
/$^ERRNAME
$res
1865 vput vexpr res
- 0 1
1866 echo $?
/$^ERRNAME
$res
1867 vput vexpr res
- 1 1
1868 echo $?
/$^ERRNAME
$res
1869 vput vexpr res
- -13 -2
1870 echo $?
/$^ERRNAME
$res
1872 vput vexpr res
* 0 0
1873 echo $?
/$^ERRNAME
$res
1874 vput vexpr res
* 0 1
1875 echo $?
/$^ERRNAME
$res
1876 vput vexpr res
* 1 1
1877 echo $?
/$^ERRNAME
$res
1878 vput vexpr res
* -13 -2
1879 echo $?
/$^ERRNAME
$res
1881 vput vexpr res
/ 0 0
1882 echo $?
/$^ERRNAME
$res
1883 vput vexpr res
/ 0 1
1884 echo $?
/$^ERRNAME
$res
1885 vput vexpr res
/ 1 1
1886 echo $?
/$^ERRNAME
$res
1887 vput vexpr res
/ -13 -2
1888 echo $?
/$^ERRNAME
$res
1890 vput vexpr res
% 0 0
1891 echo $?
/$^ERRNAME
$res
1892 vput vexpr res
% 0 1
1893 echo $?
/$^ERRNAME
$res
1894 vput vexpr res
% 1 1
1895 echo $?
/$^ERRNAME
$res
1896 vput vexpr res
% -13 -2
1897 echo $?
/$^ERRNAME
$res
1900 check behave
:vexpr-numeric
0 "${MBOX}" '1723609217 1048'
1902 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" #2>/dev/null
1903 vput vexpr res find 'bananarama' 'nana'
1904 echo $?/$^ERRNAME :$res:
1905 vput vexpr res find 'bananarama' 'bana'
1906 echo $?/$^ERRNAME :$res:
1907 vput vexpr res find 'bananarama' 'Bana'
1908 echo $?/$^ERRNAME :$res:
1909 vput vexpr res find 'bananarama' 'rama'
1910 echo $?/$^ERRNAME :$res:
1912 vput vexpr res ifind 'bananarama' 'nana'
1913 echo $?/$^ERRNAME :$res:
1914 vput vexpr res ifind 'bananarama' 'bana'
1915 echo $?/$^ERRNAME :$res:
1916 vput vexpr res ifind 'bananarama' 'Bana'
1917 echo $?/$^ERRNAME :$res:
1918 vput vexpr res ifind 'bananarama' 'rama'
1919 echo $?/$^ERRNAME :$res:
1921 vput vexpr res substring 'bananarama' 1
1922 echo $?/$^ERRNAME :$res:
1923 vput vexpr res substring 'bananarama' 3
1924 echo $?/$^ERRNAME :$res:
1925 vput vexpr res substring 'bananarama' 5
1926 echo $?/$^ERRNAME :$res:
1927 vput vexpr res substring 'bananarama' 7
1928 echo $?/$^ERRNAME :$res:
1929 vput vexpr res substring 'bananarama' 9
1930 echo $?/$^ERRNAME :$res:
1931 vput vexpr res substring 'bananarama' 10
1932 echo $?/$^ERRNAME :$res:
1933 vput vexpr res substring 'bananarama' 1 3
1934 echo $?/$^ERRNAME :$res:
1935 vput vexpr res substring 'bananarama' 3 3
1936 echo $?/$^ERRNAME :$res:
1937 vput vexpr res substring 'bananarama' 5 3
1938 echo $?/$^ERRNAME :$res:
1939 vput vexpr res substring 'bananarama' 7 3
1940 echo $?/$^ERRNAME :$res:
1941 vput vexpr res substring 'bananarama' 9 3
1942 echo $?/$^ERRNAME :$res:
1943 vput vexpr res substring 'bananarama' 10 3
1944 echo $?/$^ERRNAME :$res:
1946 vput vexpr res substring 'bananarama' -1
1947 echo $?/$^ERRNAME :$res:
1948 vput vexpr res substring 'bananarama' -3
1949 echo $?/$^ERRNAME :$res:
1950 vput vexpr res substring 'bananarama' -5
1951 echo $?/$^ERRNAME :$res:
1952 vput vexpr res substring 'bananarama' -7
1953 echo $?/$^ERRNAME :$res:
1954 vput vexpr res substring 'bananarama' -9
1955 echo $?/$^ERRNAME :$res:
1956 vput vexpr res substring 'bananarama' -10
1957 echo $?/$^ERRNAME :$res:
1958 vput vexpr res substring 'bananarama' 1 -3
1959 echo $?/$^ERRNAME :$res:
1960 vput vexpr res substring 'bananarama' 3 -3
1961 echo $?/$^ERRNAME :$res:
1962 vput vexpr res substring 'bananarama' 5 -3
1963 echo $?/$^ERRNAME :$res:
1964 vput vexpr res substring 'bananarama' 7 -3
1965 echo $?/$^ERRNAME :$res:
1966 vput vexpr res substring 'bananarama' 9 -3
1967 echo $?/$^ERRNAME :$res:
1968 vput vexpr res substring 'bananarama' 10 -3
1969 echo $?/$^ERRNAME :$res:
1971 vput vexpr res trim 'Cocoon Cocoon'
1972 echo $?/$^ERRNAME :$res:
1973 vput vexpr res trim ' Cocoon Cocoon '
1974 echo $?/$^ERRNAME :$res:
1975 vput vexpr res trim-front 'Cocoon Cocoon'
1976 echo $?/$^ERRNAME :$res:
1977 vput vexpr res trim-front ' Cocoon Cocoon '
1978 echo $?/$^ERRNAME :$res:
1979 vput vexpr res trim-end 'Cocoon Cocoon'
1980 echo $?/$^ERRNAME :$res:
1981 vput vexpr res trim-end ' Cocoon Cocoon '
1982 echo $?/$^ERRNAME :$res:
1985 check behave:vexpr-string 0 "${MBOX}" '3182004322 601'
1987 if have_feat regex; then
1988 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" #2>/dev/null
1989 vput vexpr res regex
'bananarama' 'nana'
1990 echo $?
/$^ERRNAME
:$res:
1991 vput vexpr res regex
'bananarama' 'bana'
1992 echo $?
/$^ERRNAME
:$res:
1993 vput vexpr res regex
'bananarama' 'Bana'
1994 echo $?
/$^ERRNAME
:$res:
1995 vput vexpr res regex
'bananarama' 'rama'
1996 echo $?
/$^ERRNAME
:$res:
1998 vput vexpr res iregex
'bananarama' 'nana'
1999 echo $?
/$^ERRNAME
:$res:
2000 vput vexpr res iregex
'bananarama' 'bana'
2001 echo $?
/$^ERRNAME
:$res:
2002 vput vexpr res iregex
'bananarama' 'Bana'
2003 echo $?
/$^ERRNAME
:$res:
2004 vput vexpr res iregex
'bananarama' 'rama'
2005 echo $?
/$^ERRNAME
:$res:
2007 vput vexpr res regex
'bananarama' '(.*)nana(.*)' '\${1}a\${0}u{\$2}'
2008 echo $?
/$^ERRNAME
:$res:
2009 vput vexpr res regex
'bananarama' '(.*)bana(.*)' '\${1}a\${0}u\$2'
2010 echo $?
/$^ERRNAME
:$res:
2011 vput vexpr res regex
'bananarama' 'Bana(.+)' '\$1\$0'
2012 echo $?
/$^ERRNAME
:$res:
2013 vput vexpr res regex
'bananarama' '(.+)rama' '\$1\$0'
2014 echo $?
/$^ERRNAME
:$res:
2016 vput vexpr res iregex
'bananarama' '(.*)nana(.*)' '\${1}a\${0}u{\$2}'
2017 echo $?
/$^ERRNAME
:$res:
2018 vput vexpr res iregex
'bananarama' '(.*)bana(.*)' '\${1}a\${0}u\$2'
2019 echo $?
/$^ERRNAME
:$res:
2020 vput vexpr res iregex
'bananarama' 'Bana(.+)' '\$1\$0'
2021 echo $?
/$^ERRNAME
:$res:
2022 vput vexpr res iregex
'bananarama' '(.+)rama' '\$1\$0'
2023 echo $?
/$^ERRNAME
:$res:
2027 check behave
:vexpr-regex
0 "${MBOX}" '3270360157 311'
2029 printf 'behave:vexpr-regex: unsupported, skipped\n'
2035 t_behave_call_ret
() {
2036 t_prolog t_behave_call_ret
2038 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} -Snomemdebug > "${MBOX}" 2>&1
2043 vput vexpr j '&' $i 7
2049 vput vexpr j '&' $i 7
2055 echo ! The end for $1
2059 # Transport $?/$! up the call chain
2065 wysh set i=$? j=$! k=$^ERRNAME
2069 echo ! The end for $1
2070 return $i $^ERR-BUSY
2074 # Up and down it goes
2081 vput vexpr k - $1 $2
2085 echo "# <$i/$j> .. "
2089 eval echon
"<\$1=\$i/\$^ERRNAME-$j "
2092 echo ! The end
for $1=$i/$2
2096 return $i $^ERR-BUSY
2102 call w1
0; echo ?
=$?
!=$
!; echo -----;
2103 call w2
0; echo ?
=$?
!=$^ERRNAME
; echo -----;
2104 call w3
0 1; echo ?
=$?
!=$^ERRNAME
; echo -----;
2107 check behave
:call_ret
0 "${MBOX}" '1572045517 5922'
2113 t_prolog t_behave_xcall
2115 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} -Snomemdebug > "${MBOX}" 2>&1
2120 vput vexpr j '&' $i 7
2126 echo ! The end for $1/$2
2128 return $i $^ERR-BUSY
2139 echo ?=$? !=$^ERRNAME
2142 echo ?=$? !=$^ERRNAME
2144 echo ?=$? !=$^ERRNAME
2147 check behave:xcall-1 0 "${MBOX}" '2401702082 23801'
2151 ${cat} <<- '__EOT' > "${BODY}"
2156 vput vexpr j '&' $i 7
2162 echo ! The end for $1
2165 echo would be err with errexit
2174 echo zwei, ?=$? !=$!
2175 localopts yes; set errexit
2177 echo drei, ?=$? !=$^ERRNAME
2179 echo vier, ?=$? !=$^ERRNAME, this is an error
2182 echo outer 1, ?=$? !=$^ERRNAME
2184 echo outer 2, ?=$? !=$^ERRNAME, could be error if xxxign non-empty
2186 echo outer 3, ?=$? !=$^ERRNAME
2187 echo this is definitely an error
2190 < "${BODY}" ${MAILX} ${ARGS} -X'commandalias xxxign ignerr' -Snomemdebug \
2192 check behave
:xcall-2
0 "${MBOX}" '3900716531 4200'
2194 < "${BODY}" ${MAILX} ${ARGS} -X'commandalias xxxign " "' -Snomemdebug \
2196 check behave:xcall-3 1 "${MBOX}" '1006776201 2799'
2201 t_behave_vpospar() {
2202 t_prolog t_behave_vpospar
2204 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" 2>&1
2205 vpospar
set hey
, "'you ", world
!
2206 echo $?
/$^ERRNAME
/$#: $
* / "$@" / <$1><$2><$3><$4>
2207 vput vpospar x quote
; echo x
<$x>
2208 vpospar
clear;echo $?
/$^ERRNAME
/$#: $
* / "$@" / <$1><$2><$3><$4>
2209 vput vpospar y quote
;echo y
<$y>
2210 eval vpospar
set ${x};echo $?
/$^ERRNAME
/$#: $
* / "$@" / <$1><$2><$3><$4>
2211 eval vpospar
set ${y};echo $?
/$^ERRNAME
/$#: $
* / "$@" / <$1><$2><$3><$4>
2212 eval vpospar
set ${x};echo $?
/$^ERRNAME
/$#: $
* / "$@" / <$1><$2><$3><$4>
2215 echo infun2
:$?
/$^ERRNAME
/$#:$
*/"$@"/<$1><$2><$3><$4>
2216 vput vpospar z quote
;echo infun2
:z
<$z>
2220 echo infun
:$?
/$^ERRNAME
/$#:$
*/"$@"/<$1><$2><$3><$4>
2221 vput vpospar y quote
;echo infun
:y
<$y>
2222 eval vpospar
set ${x};echo infun
:$?
/$^ERRNAME
/$#:$
*/"$@"/<$1><$2><$3><$4>
2223 vpospar
clear;echo infun
:$?
/$^ERRNAME
/$#:$
*/"$@"/<$1><$2><$3><$4>
2225 echo infun
:$?
/$^ERRNAME
/$#:$
*/"$@"/<$1><$2><$3><$4>
2226 eval vpospar
set ${y};echo infun
:$?
/$^ERRNAME
/$#:$
*/"$@"/<$1><$2><$3><$4>
2229 call infun This
"in a" fun
2230 echo $?
/$^ERRNAME
/$#: $
* / "$@" / <$1><$2><$3><$4>
2231 vpospar
clear;echo $?
/$^ERRNAME
/$#: $
* / "$@" / <$1><$2><$3><$4>
2233 check behave
:vpospar-1
0 "${MBOX}" '155175639 866'
2236 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" 2>&1
2238 echo ifs<$ifs> ifs-ws<$ifs-ws>
2239 vpospar set hey, "'you ", world!
2240 echo $?/$^ERRNAME/$#: $* / "$@" / <$1><$2><$3><$4>
2241 vput vpospar x quote; echo x<$x>
2242 vpospar clear;echo $?/$^ERRNAME/$#: $* / "$@" / <$1><$2><$3><$4>
2243 eval vpospar set ${x};echo $?/$^ERRNAME/$#: $* / "$@" / <$1><$2><$3><$4>
2246 echo ifs<$ifs> ifs-ws<$ifs-ws>
2247 vpospar set hey, "'you
", world!
2248 unset ifs;echo $?/$^ERRNAME/$#: $* / "$@
" / <$1><$2><$3><$4>
2250 vput vpospar x quote; echo x<$x>
2251 vpospar clear;echo $?/$^ERRNAME/$#: $* / "$@
" / <$1><$2><$3><$4>
2252 eval vpospar set ${x};\
2253 unset ifs;echo $?/$^ERRNAME/$#: $* / "$@
" / <$1><$2><$3><$4>
2256 echo ifs<$ifs> ifs-ws<$ifs-ws>
2257 vpospar set hey, "'you ", world!
2258 unset ifs; echo $?/$^ERRNAME/$#: $* / "$@" / <$1><$2><$3><$4>
2260 vput vpospar x quote; echo x<$x>
2261 vpospar clear;echo $?/$^ERRNAME/$#: $* / "$@" / <$1><$2><$3><$4>
2262 eval vpospar set ${x};\
2263 unset ifs;echo $?/$^ERRNAME/$#: $* / "$@" / <$1><$2><$3><$4>
2265 check behave:vpospar-ifs 0 "${MBOX}" '2015927702 706'
2270 t_behave_atxplode() {
2271 t_prolog t_behave_atxplode
2272 TRAP_EXIT_ADDONS="./.t*"
2274 ${cat} > ./.t.sh <<- '___
'; ${cat} > ./.t.rc <<- '___
'
2277 printf " (1/$#: <$1>)"
2279 if [ $# -gt 0 ]; then
2293 printf yyy;yyy 'xxx' "b\$
'\t'u
' "
2294 printf xxx;xxx arg ,b u.
2295 printf xxx;xxx arg , .
2296 printf xxx;xxx arg ,ball.
2302 echon " (1/$#: <$1>)"
2317 echon yyy;call yyy '\call xxx' "b\$
'\t'u
' "
2318 echon xxx;call xxx arg ,b u.
2319 echon xxx;call xxx arg , .
2320 echon xxx;call xxx arg ,ball.
2323 ${MAILX} ${ARGS} -X'source ./.t.rc' -Xx > "${MBOX}" 2>&1
2324 check behave:atxplode-1 0 "${MBOX}" '41566293 164'
2326 #${SHELL} ./.t.sh > ./.tshout 2>&1
2327 #check behave:atxplode:disproof-1 0 ./.tshout '41566293 164'
2333 t_prolog t_behave_read
2334 TRAP_EXIT_ADDONS="./.t*"
2336 ${cat} <<- '__EOT
' > .tin
2337 hey1, "'you
", world!
2338 hey2, "'you ", bugs bunny!
2343 ${cat} <<- '__EOT
' |\
2344 ${MAILX} ${ARGS} -X'readctl create ./.tin' > "${MBOX}" 2>&1
2346 echo $?/$^ERRNAME / <$a><$b><$c>
2348 echo $?/$^ERRNAME / <$a><$b><$c>
2350 echo $?/$^ERRNAME / <$a><$b><$c>
2352 echo $?/$^ERRNAME / <$a><$b><$c>
2353 unset a b c;read a b c
2354 echo $?/$^ERRNAME / <$a><$b><$c>
2355 readctl remove ./.tin;echo readctl remove:$?/$^ERRNAME
2357 check behave:read-1 0 "${MBOX}" '1527910147 173'
2359 ${cat} <<- '__EOT
' > .tin2
2360 hey2.0,:"'you
",:world!:mars.:
2361 hey2.1,:"'you ",:world!
2362 hey2.2,:"'you
",:bugs bunny!
2368 ${cat} <<- '__EOT' |\
2369 6< .tin2 ${MAILX} ${ARGS} -X 'readctl create 6' > "${MBOX}" 2>&1
2372 echo $?
/$^ERRNAME
/ <$a><$b><$c>
2374 echo $?
/$^ERRNAME
/ <$a><$b><$c>
2376 echo $?
/$^ERRNAME
/ <$a><$b><$c>
2378 echo $?
/$^ERRNAME
/ <$a><$b><$c>
2380 echo $?
/$^ERRNAME
/ <$a><$b><$c>
2382 echo $?
/$^ERRNAME
/ <$a><$b><$c>
2383 unset a b c
;read a b c
2384 echo $?
/$^ERRNAME
/ <$a><$b><$c>
2386 echo $?
/$^ERRNAME
/ <$a><$b><$c>
2387 readctl remove
6;echo readctl remove
:$?
/$^ERRNAME
2389 check behave
:read-ifs
0 "${MBOX}" '890153490 298'
2391 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} > "${MBOX}" 2>&1
2393 readall d; echo $?/$^ERRNAME / <$d>
2394 wysh set d;readall d;echo $?/$^ERRNAME / <$d>
2395 readctl create .tin2
2396 readall d; echo $?/$^ERRNAME / <$d>
2397 wysh set d;readall d;echo $?/$^ERRNAME / <$d>
2398 readctl remove .tin;echo $?/$^ERRNAME;\
2399 readctl remove .tin2;echo $?/$^ERRNAME
2401 check behave:readall 0 "${MBOX}" '860434889 333'
2407 t_prolog t_behave_mbox
2408 TRAP_EXIT_ADDONS=".
/.t
*"
2412 while [ ${i} -lt 112 ]; do
2413 printf 'm file://%s\n~s Subject %s\nHello %s!\n~.\n' \
2414 "${MBOX}" "${i}" "${i}"
2417 ) | ${MAILX} ${ARGS}
2418 check behave:mbox-1 0 "${MBOX}" '1140119864 13780'
2420 printf 'File "%s
"\ncopy * "%s
"\nFile "%s
"\nfrom*' "${MBOX}" .tmbox1 .tmbox1 |
2421 ${MAILX} ${ARGS} > .tlst
2422 check behave:mbox-2 0 .tlst '2739893312 9103'
2424 printf 'File "%s
"\ncopy * "file://%s
"\nFile "file://%s
"\nfrom*' \
2425 "${MBOX}" .tmbox2 .tmbox2 | ${MAILX} ${ARGS} > .tlst
2426 check behave
:mbox-3
0 .tlst
'1702194178 9110'
2428 # only the odd (even)
2430 printf 'File "file://%s"\ncopy ' .tmbox2
2432 while [ ${i} -lt 112 ]; do
2434 [ ${j} -eq 1 ] && printf '%s ' "${i}"
2437 printf 'file://%s\nFile "file://%s"\nfrom*' .tmbox3 .tmbox3
2438 ) |
${MAILX} ${ARGS} > .tlst
2439 check behave
:mbox-4
0 .tmbox3
'631132924 6890'
2440 check behave
:mbox-5
- .tlst
'2960975049 4573'
2443 printf 'file "file://%s"\nmove ' .tmbox2
2445 while [ ${i} -lt 112 ]; do
2447 [ ${j} -eq 0 ] && [ ${i} -ne 0 ] && printf '%s ' "${i}"
2450 printf 'file://%s\nFile "file://%s
"\nfrom*\nFile "file://%s
"\nfrom*' \
2451 .tmbox3 .tmbox3 .tmbox2
2452 ) | ${MAILX} ${ARGS} > .tlst
2453 check behave:mbox-6 0 .tmbox3 '1387070539 13655'
2454 ${sed} 2d < .tlst > .tlstx
2455 check behave:mbox-7 - .tlstx '2729940494 13645'
2460 t_behave_maildir() {
2461 t_prolog t_behave_maildir
2462 TRAP_EXIT_ADDONS=".
/.t
*"
2466 while [ ${i} -lt 112 ]; do
2467 printf 'm file://%s\n~s Subject %s\nHello %s!\n~.\n' \
2468 "${MBOX}" "${i}" "${i}"
2471 ) | ${MAILX} ${ARGS}
2472 check behave:maildir-1 0 "${MBOX}" '1140119864 13780'
2478 ' "${MBOX}" .tmdir1 .tmdir1 |
2479 ${MAILX} ${ARGS} -Snewfolders=maildir > .tlst
2480 check behave:maildir-2 0 .tlst '1797938753 9103'
2483 copy * "maildir
://%s
"
2486 ' "${MBOX}" .tmdir2 .tmdir2 |
2487 ${MAILX} ${ARGS} > .tlst
2488 check behave:maildir-3 0 .tlst '1155631089 9113'
2490 printf 'File "maildir
://%s
"
2494 ' .tmdir2 .tmbox1 .tmbox1 |
2495 ${MAILX} ${ARGS} > .tlst
2496 check behave:maildir-4 0 .tmbox1 '2646131190 13220'
2497 check behave:maildir-5 - .tlst '3701297796 9110'
2499 # only the odd (even)
2501 printf 'File "maildir
://%s
"
2504 while [ ${i} -lt 112 ]; do
2506 [ ${j} -eq 1 ] && printf '%s ' "${i}"
2513 ) | ${MAILX} ${ARGS} > .tlst
2514 check behave:maildir-6 0 .tmbox2 '142890131 6610'
2515 check behave:maildir-7 - .tlst '960096773 4573'
2518 printf 'file "maildir
://%s
"
2521 while [ ${i} -lt 112 ]; do
2523 [ ${j} -eq 0 ] && [ ${i} -ne 0 ] && printf '%s ' "${i}"
2531 ' .tmbox2 .tmbox2 .tmdir2
2532 ) |
${MAILX} ${ARGS} > .tlst
2533 check behave
:maildir-8
0 .tmbox2
'3806905791 13100'
2534 ${sed} 2d
< .tlst
> .tlstx
2535 check behave
:maildir-9
- .tlstx
'4216815295 13645'
2540 t_behave_record_a_resend
() {
2541 t_prolog t_behave_record_a_resend
2542 TRAP_EXIT_ADDONS
="./.t.record ./.t.resent"
2546 m %s\n~s Subject 1.\nHello.\n~.
2547 set record-files add-file-recipients
2548 m %s\n~s Subject 2.\nHello.\n~.
2550 resend 2 ./.t.resent
2551 Resend 1 ./.t.resent
2553 resend 2 ./.t.resent
2554 Resend 1 ./.t.resent
2555 ' .
/.t.record
"${MBOX}" "${MBOX}" "${MBOX}" |
2558 check behave
:record_a_resend-1
0 "${MBOX}" '3057873538 256'
2559 check behave
:record_a_resend-2
- .t.record
'391356429 460'
2560 check behave
:record_a_resend-3
- .t.resent
'2685231691 648'
2565 t_behave_e_H_L_opts
() {
2566 t_prolog t_behave_e_H_L_opts
2567 TRAP_EXIT_ADDONS
="./.tsendmail.sh ./.t.mbox"
2570 ${MAILX} ${ARGS} -ef .
/.t.mbox
2571 echo ${?} > "${MBOX}"
2573 ${cat} <<-_EOT > ./.tsendmail.sh
2575 (echo 'From Alchemilla Wed Apr 07 17:03:33 2017' && ${cat} && echo
2578 chmod 0755 .
/.tsendmail.sh
2579 printf 'm me@exam.ple\nLine 1.\nHello.\n~.\n' |
2580 ${MAILX} ${ARGS} -Smta=.
/.tsendmail.sh
2581 printf 'm you@exam.ple\nLine 1.\nBye.\n~.\n' |
2582 ${MAILX} ${ARGS} -Smta=.
/.tsendmail.sh
2584 ${MAILX} ${ARGS} -ef .
/.t.mbox
2585 echo ${?} >> "${MBOX}"
2586 ${MAILX} ${ARGS} -efL @t@me .
/.t.mbox
2587 echo ${?} >> "${MBOX}"
2588 ${MAILX} ${ARGS} -efL @t@you .
/.t.mbox
2589 echo ${?} >> "${MBOX}"
2590 ${MAILX} ${ARGS} -efL '@>@Line 1' .
/.t.mbox
2591 echo ${?} >> "${MBOX}"
2592 ${MAILX} ${ARGS} -efL '@>@Hello.' .
/.t.mbox
2593 echo ${?} >> "${MBOX}"
2594 ${MAILX} ${ARGS} -efL '@>@Bye.' .
/.t.mbox
2595 echo ${?} >> "${MBOX}"
2596 ${MAILX} ${ARGS} -efL '@>@Good bye.' .
/.t.mbox
2597 echo ${?} >> "${MBOX}"
2599 ${MAILX} ${ARGS} -fH ./.t.mbox >> "${MBOX}"
2600 echo ${?} >> "${MBOX}"
2601 ${MAILX} ${ARGS} -fL @t@me ./.t.mbox >> "${MBOX}"
2602 echo ${?} >> "${MBOX}"
2603 ${MAILX} ${ARGS} -fL @t@you ./.t.mbox >> "${MBOX}"
2604 echo ${?} >> "${MBOX}"
2605 ${MAILX} ${ARGS} -fL '@>@Line 1' ./.t.mbox >> "${MBOX}"
2606 echo ${?} >> "${MBOX}"
2607 ${MAILX} ${ARGS} -fL '@>@Hello.' ./.t.mbox >> "${MBOX}"
2608 echo ${?} >> "${MBOX}"
2609 ${MAILX} ${ARGS} -fL '@>@Bye.' ./.t.mbox >> "${MBOX}"
2610 echo ${?} >> "${MBOX}"
2611 ${MAILX} ${ARGS} -fL '@>@Good bye.' ./.t.mbox >> "${MBOX}" 2>/dev/null
2612 echo ${?} >> "${MBOX}"
2614 check behave:e_H_L_opts - "${MBOX}" '1708955574 678'
2619 t_behave_alternates() {
2620 t_prolog t_behave_alternates
2621 TRAP_EXIT_ADDONS=".
/.t
*"
2623 ${cat} <<-_EOT > ./.tsendmail.sh
2625 (echo 'From Valeriana Sat Jul 08 15:54:03 2017' && ${cat} && echo
2628 chmod 0755 ./.tsendmail.sh
2630 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} -Smta=./.tsendmail.sh > ./.tall 2>&1
2634 alternates a1@b1 a2@b2 a3@b3
2639 echo $?/$^ERRNAME <$rv>
2644 echo $?/$^ERRNAME <$rv>
2647 echo $?/$^ERRNAME <$rv>
2650 echo $?/$^ERRNAME <$rv>
2654 alternates a1@b1 a2@b2 a3@b3
2657 echo $?/$^ERRNAME <$rv>
2660 echo $?/$^ERRNAME <$rv>
2663 echo $?/$^ERRNAME <$rv>
2666 alternates a1@b1 a2@b2 a3@b3
2669 echo $?/$^ERRNAME <$rv>
2672 echo $?/$^ERRNAME <$rv>
2675 echo $?/$^ERRNAME <$rv>
2679 alternates a1@b1 a2@b2 a3@b3
2682 echo $?/$^ERRNAME <$rv>
2686 alternates a1@b1 a1@c1 a1@d1 a2@b2 a3@b3 a3@c3 a3@d3
2688 ~s all alternates, only a1@b1 remains
2690 ~b a3@b3 a3@c3 a3@d3
2699 alternates a1@b1 a1@c1 a2@b2 a3@b3
2701 ~s a1@b1 a1@d1, and a3@c3 a3@d3 remain
2703 ~b a3@b3 a3@c3 a3@d3
2710 alternates a1@b1 a2@b2 a3; set allnet
2712 ~s all alternates via allnet, only a1@b1 remains
2714 ~b a3@b3 a3@c3 a3@d3
2725 echo $?/$^ERRNAME <$rv>
2729 echo $?/$^ERRNAME <$rv>
2733 echo $?/$^ERRNAME <$rv>
2737 echo $?/$^ERRNAME <$rv>
2741 echo $?/$^ERRNAME <$rv>
2745 alternates a1@b1 a2@b2
2748 echo $?/$^ERRNAME <$rv>
2749 alternates a3@b3 a4@b4
2752 echo $?/$^ERRNAME <$rv>
2754 check behave:alternates-1 0 "${MBOX}" '142184864 515'
2755 check behave:alternates-2 - .tall '1878598364 505'
2761 t_prolog t_behave_alias
2762 TRAP_EXIT_ADDONS=".
/.t
*"
2764 ${cat} <<-_EOT > ./.tsendmail.sh
2766 (echo 'From Hippocastanum Mon Jun 19 15:07:07 2017' && ${cat} && echo
2769 chmod 0755 ./.tsendmail.sh
2771 ${cat} <<- '__EOT' | ${MAILX} ${ARGS} -Smta=./.tsendmail.sh > ./.tall 2>&1
2773 alias a1 ex2@a1.ple "EX3
<ex3@a1.ple
>"
2775 alias a2 ex1@a2.ple ex2@a2.ple ex3@a2.ple ex4@a2.ple
2777 alias a4 a5 ex1@a4.ple
2779 alias a6 a7 ex1@a6.ple
2793 check behave:alias-1 0 "${MBOX}" '2496925843 272'
2794 check behave:alias-2 - .tall '3548953204 152'
2796 # TODO t_behave_alias: n_ALIAS_MAXEXP is compile-time constant,
2797 # TODO need to somehow provide its contents to the test, then test
2802 t_behave_filetype() {
2803 t_prolog t_behave_filetype
2804 TRAP_EXIT_ADDONS=".
/.t
*"
2806 ${cat} <<-_EOT > ./.tsendmail.sh
2808 (echo 'From Alchemilla Wed Apr 25 15:12:13 2017' && ${cat} && echo
2811 chmod 0755 ./.tsendmail.sh
2813 printf 'm m1@e.t\nL1\nHy1\n~.\nm m2@e.t\nL2\nHy2\n~@ %s\n~.\n' \
2814 "${SRCDIR}snailmail.jpg" | ${MAILX} ${ARGS} -Smta=.
/.tsendmail.sh
2815 check behave
:filetype-1
0 "${MBOX}" '1594682963 13520'
2817 if (echo |
gzip -c) >/dev
/null
2>&1; then
2820 printf 'File "%s"\ncopy 1 ./.t.mbox.gz\ncopy 2 ./.t.mbox.gz' \
2821 "${MBOX}" | ${MAILX} ${ARGS} \
2822 -X'filetype gz gzip\ -dc gzip\ -c'
2823 printf 'File ./.t.mbox.gz\ncopy * ./.t.mbox\n' |
2824 ${MAILX} ${ARGS} -X'filetype gz gzip\ -dc gzip\ -c'
2826 check behave:filetype-2 - ".
/.t.mbox
" '1594682963 13520'
2827 check behave:filetype-3 - ".
/.t.out
" '2392348396 102'
2829 echo 'behave:filetype-2: unsupported, skipped'
2830 echo 'behave:filetype-3: unsupported, skipped'
2835 printf 'File "%s
"\ncopy 1 ./.t.mbox.gz
2841 -X'filetype gz gzip\ -dc gzip\ -c' \
2842 -X'filetype mbox.gz "${sed} 1,3d|
${cat}" \
2843 "echo eins
;echo zwei
;echo und mit
${sed} bist Du dabei
;${cat}"'
2844 printf 'File ./.t.mbox.gz\ncopy * ./.t.mbox\n' |
2846 -X'filetype gz gzip\ -dc gzip\ -c' \
2847 -X'filetype mbox.gz "${sed} 1,3d|
${cat}" kill\ 0'
2849 check behave:filetype-4 - ".
/.t.mbox
" '2886541147 27060'
2850 check behave:filetype-5 - ".
/.t.out
" '852335377 172'
2855 t_behave_message_injections() {
2856 t_prolog t_behave_message_injections
2857 TRAP_EXIT_ADDONS=".
/.t
*"
2859 ${cat} <<-_EOT > ./.tsendmail.sh
2861 (echo 'From Echinacea Tue Jun 20 15:54:02 2017' && ${cat} && echo
2864 chmod 0755 ./.tsendmail.sh
2866 echo mysig > ./.tmysig
2868 echo some-body | ${MAILX} ${ARGS} -Smta=./.tsendmail.sh \
2869 -Smessage-inject-head=head-inject \
2870 -Smessage-inject-tail=tail-inject \
2871 -Ssignature=./.tmysig \
2872 ex@am.ple > ./.tall 2>&1
2873 check behave:message_injections-1 0 "${MBOX}" '2434746382 134'
2874 check behave:message_injections-2 - .tall '4294967295 0' # empty file
2876 ${cat} <<-_EOT > ./.template
2880 Subject: This subject is
2882 Body, body, body me.
2884 < ./.template ${MAILX} ${ARGS} -t -Smta=./.tsendmail.sh \
2885 -Smessage-inject-head=head-inject \
2886 -Smessage-inject-tail=tail-inject \
2887 -Ssignature=./.tmysig \
2889 check behave:message_injections-3 0 "${MBOX}" '3114203412 198'
2890 check behave:message_injections-4 - .tall '4294967295 0' # empty file
2895 t_behave_compose_hooks() { # TODO monster
2896 t_prolog t_behave_compose_hooks
2897 TRAP_EXIT_ADDONS=".
/.t
*"
2899 (echo line one&&echo line two&&echo line three) > ./.treadctl
2900 (echo echo four&&echo echo five&&echo echo six) > ./.tattach
2902 ${cat} <<-_EOT > ./.tsendmail.sh
2904 (echo 'From PrimulaVeris Wed Apr 10 22:59:00 2017' && ${cat} && echo
2907 chmod 0755 ./.tsendmail.sh
2909 ${cat} <<'__EOT__' > ./.trc
2911 echoerr "Failed
: $1. Bailing out
"; echo "~x
"; xit
2914 vput vexpr es substr "$1" 0 1
2919 define read_mline_res {
2920 read hl; wysh set len=$? es=$! en=$^ERRNAME;\
2921 echo $len/$es/$^ERRNAME: $hl
2922 if [ $es -ne $^ERR-NONE ]
2923 xcall bail read_mline_res
2925 \xcall read_mline_res
2930 echo "~^header list
"; read hl; echo $hl;\
2931 call xerr "$hl" "in_addr
($xh) 0-1"
2933 echo "~^header insert
$xh diet
<$xh@exam.ple
> spliced
";\
2934 read es; echo $es; call xerr "$es" "ins_addr
$xh 1-1"
2935 echo "~^header insert
$xh <${xh}2@exam.ple
>";\
2936 read es; echo $es; call xerr "$es" "ins_addr
$xh 1-2"
2937 echo "~^header insert
$xh ${xh}3@exam.ple
";\
2938 read es; echo $es; call xerr "$es" "ins_addr
$xh 1-3"
2939 echo "~^header list
$xh"; read hl; echo $hl;\
2940 call xerr "$hl" "ins_addr
$xh 1-4"
2941 echo "~^header show
$xh"; read es; call xerr $es "ins_addr
$xh 1-5"
2944 if [ "$t_remove" == "" ]
2948 echo "~^header remove
$xh"; read es; call xerr $es "ins_addr
$xh 2-1"
2949 echo "~^header remove
$xh"; read es; vput vexpr es substr $es 0 3
2951 xcall bail "ins_addr
$xh 2-2"
2953 echo "~^header list
$xh"; read es; vput vexpr es substr $es 0 3
2955 xcall bail "ins_addr
$xh 2-3"
2957 echo "~^header show
$xh"; read es; vput vexpr es substr $es 0 3
2959 xcall bail "ins_addr
$xh 2-4"
2963 echo "~^header insert
$xh diet
<$xh@exam.ple
> spliced
";\
2964 read es; echo $es; call xerr "$es" "ins_addr
$xh 3-1"
2965 echo "~^header insert
$xh <${xh}2@exam.ple
>";\
2966 read es; echo $es; call xerr "$es" "ins_addr
$xh 3-2"
2967 echo "~^header insert
$xh ${xh}3@exam.ple
";\
2968 read es; echo $es; call xerr "$es" "ins_addr
$xh 3-3"
2969 echo "~^header list
$xh"; read hl; echo $hl;\
2970 call xerr "$hl" "ins_addr
$xh 3-4"
2971 echo "~^header show
$xh"; read es; call xerr $es "ins_addr
$xh 3-5"
2974 echo "~^header remove-at
$xh 1"; read es;\
2975 call xerr $es "ins_addr
$xh 3-6"
2976 echo "~^header remove-at
$xh 1"; read es;\
2977 call xerr $es "ins_addr
$xh 3-7"
2978 echo "~^header remove-at
$xh 1"; read es;\
2979 call xerr $es "ins_addr
$xh 3-8"
2980 echo "~^header remove-at
$xh 1"; read es;\
2981 vput vexpr es substr $es 0 3
2983 xcall bail "ins_addr
$xh 3-9"
2985 echo "~^header remove-at
$xh T
"; read es;\
2986 vput vexpr es substr $es 0 3
2988 xcall bail "ins_addr
$xh 3-10"
2990 echo "~^header list
$xh"; read es;\
2991 vput vexpr es substr $es 0 3
2993 xcall bail "ins_addr
$xh 3-11"
2995 echo "~^header show
$xh"; read es;\
2996 vput vexpr es substr $es 0 3
2998 xcall bail "ins_addr
$xh 3-12"
3002 echo "~^header insert
$xh diet
<$xh@exam.ple
> spliced
";\
3003 read es; echo $es; call xerr "$es" "ins_addr
$xh 4-1"
3004 echo "~^header insert
$xh <${xh}2@exam.ple
> (comment
) \"Quot
(e
)d
\"";\
3005 read es; echo $es; call xerr "$es" "ins_addr
$xh 4-2"
3006 echo "~^header insert
$xh ${xh}3@exam.ple
";\
3007 read es; echo $es; call xerr "$es" "ins_addr
$xh 4-3"
3008 echo "~^header list
$xh"; read hl; echo $hl;\
3009 call xerr "$hl" "header list
$xh 3-4"
3010 echo "~^header show
$xh"; read es; call xerr $es "ins_addr
$xh 4-5"
3013 echo "~^header remove-at
$xh 3"; read es;\
3014 call xerr $es "ins_addr
$xh 4-6"
3015 echo "~^header remove-at
$xh 2"; read es;\
3016 call xerr $es "ins_addr
$xh 4-7"
3017 echo "~^header remove-at
$xh 1"; read es;\
3018 call xerr $es "ins_addr
$xh 4-8"
3019 echo "~^header remove-at
$xh 1"; read es;\
3020 vput vexpr es substr $es 0 3
3022 xcall bail "ins_addr
$xh 4-9"
3024 echo "~^header remove-at
$xh T
"; read es;\
3025 vput vexpr es substr $es 0 3
3027 xcall bail "ins_addr
$xh 4-10"
3029 echo "~^header list
$xh"; read es;\
3030 vput vexpr es substr $es 0 3
3032 xcall bail "ins_addr
$xh 4-11"
3034 echo "~^header show
$xh"; read es;\
3035 vput vexpr es substr $es 0 3
3037 xcall bail "ins_addr
$xh 4-12"
3041 wysh set xh=$1 mult=$2
3042 echo "~^header list
"; read hl; echo $hl;\
3043 call xerr "$hl" "ins_ref
($xh) 0-1"
3045 echo "~^header insert
$xh <$xh@exam.ple
>";\
3046 read es; echo $es; call xerr "$es" "ins_ref
$xh 1-1"
3048 echo "~^header insert
$xh <${xh}2@exam.ple
>";\
3049 read es; echo $es; call xerr "$es" "ins_ref
$xh 1-2"
3050 echo "~^header insert
$xh ${xh}3@exam.ple
";\
3051 read es; echo $es; call xerr "$es" "ins_ref
$xh 1-3"
3053 echo "~^header insert
$xh <${xh}2@exam.ple
>"; read es;\
3054 vput vexpr es substr $es 0 3
3056 xcall bail "ins_ref
$xh 1-4"
3060 echo "~^header list
$xh"; read hl; echo $hl;\
3061 call xerr "$hl" "ins_ref
$xh 1-5"
3062 echo "~^header show
$xh"; read es; call xerr $es "ins_ref
$xh 1-6"
3065 if [ "$t_remove" == "" ]
3069 echo "~^header remove
$xh"; read es;\
3070 call xerr $es "ins_ref
$xh 2-1"
3071 echo "~^header remove
$xh"; read es;\
3072 vput vexpr es substr $es 0 3
3074 xcall bail "ins_ref
$xh 2-2"
3076 echo "~^header list
$xh"; read es;\
3077 vput vexpr es substr $es 0 3
3079 xcall bail "$es ins_ref
$xh 2-3"
3081 echo "~^header show
$xh"; read es;\
3082 vput vexpr es substr $es 0 3
3084 xcall bail "ins_ref
$xh 2-4"
3088 echo "~^header insert
$xh <$xh@exam.ple
>";\
3089 read es; echo $es; call xerr "$es" "ins_ref
$xh 3-1"
3091 echo "~^header insert
$xh <${xh}2@exam.ple
>";\
3092 read es; echo $es; call xerr "$es" "ins_ref
$xh 3-2"
3093 echo "~^header insert
$xh ${xh}3@exam.ple
";\
3094 read es; echo $es; call xerr "$es" "ins_ref
$xh 3-3"
3096 echo "~^header list
$xh";\
3097 read hl; echo $hl; call xerr "$hl" "ins_ref
$xh 3-4"
3098 echo "~^header show
$xh";\
3099 read es; call xerr $es "ins_ref
$xh 3-5"
3102 echo "~^header remove-at
$xh 1"; read es;\
3103 call xerr $es "ins_ref
$xh 3-6"
3104 if [ $mult -ne 0 ] && [ $xh != subject ]
3105 echo "~^header remove-at
$xh 1"; read es;\
3106 call xerr $es "ins_ref
$xh 3-7"
3107 echo "~^header remove-at
$xh 1"; read es;\
3108 call xerr $es "ins_ref
$xh 3-8"
3110 echo "~^header remove-at
$xh 1"; read es;\
3111 vput vexpr es substr $es 0 3
3113 xcall bail "ins_ref
$xh 3-9"
3115 echo "~^header remove-at
$xh T
"; read es;\
3116 vput vexpr es substr $es 0 3
3118 xcall bail "ins_ref
$xh 3-10"
3120 echo "~^header show
$xh"; read es;\
3121 vput vexpr es substr $es 0 3
3123 xcall bail "ins_ref
$xh 3-11"
3127 echo "~^header insert
$xh <$xh@exam.ple
> ";\
3128 read es; echo $es; call xerr "$es" "ins_ref
$xh 4-1"
3130 echo "~^header insert
$xh <${xh}2@exam.ple
> ";\
3131 read es; echo $es; call xerr "$es" "ins_ref
$xh 4-2"
3132 echo "~^header insert
$xh ${xh}3@exam.ple
";\
3133 read es; echo $es; call xerr "$es" "ins_ref
$xh 4-3"
3135 echo "~^header list
$xh"; read hl; echo $hl;\
3136 call xerr "$hl" "ins_ref
$xh 4-4"
3137 echo "~^header show
$xh"; read es; call xerr $es "ins_ref
$xh 4-5"
3140 if [ $mult -ne 0 ] && [ $xh != subject ]
3141 echo "~^header remove-at
$xh 3"; read es;\
3142 call xerr $es "ins_ref
$xh 4-6"
3143 echo "~^header remove-at
$xh 2"; read es;\
3144 call xerr $es "ins_ref
$xh 4-7"
3146 echo "~^header remove-at
$xh 1"; read es;\
3147 call xerr $es "ins_ref
$xh 4-8"
3148 echo "~^header remove-at
$xh 1"; read es;\
3149 vput vexpr es substr $es 0 3
3151 xcall bail "ins_ref
$xh 4-9"
3153 echo "~^header remove-at
$xh T
"; read es;\
3154 vput vexpr es substr $es 0 3
3156 xcall bail "ins_ref
$xh 4-10"
3158 echo "~^header show
$xh"; read es;\
3159 vput vexpr es substr $es 0 3
3161 xcall bail "ins_ref
$xh 4-11"
3166 # In collect.c order
3168 call ins_ref sender 0 # Not a "ref
", but works
3172 call ins_addr reply-To
3173 call ins_addr mail-Followup-to
3174 call ins_ref messAge-id 0
3175 call ins_ref rEfErEncEs 1
3176 call ins_ref in-Reply-to 1
3177 call ins_ref subject 1 # Not a "ref
", but works (with tweaks)
3178 call ins_addr freeForm1
3179 call ins_addr freeform2
3181 echo "~^header show MAILX-Command
"; read es; call xerr $es "t_header
1000"
3183 echo "~^header show MAILX-raw-TO
"; read es; call xerr $es "t_header
1001"
3191 echo "~^attachment
";\
3192 read hl; echo $hl; vput vexpr es substr "$hl" 0 3
3194 xcall bail "attach
0-1"
3197 echo "~^attach attribute .
/.treadctl
";\
3198 read hl; echo $hl; vput vexpr es substr "$hl" 0 3
3200 xcall bail "attach
0-2"
3202 echo "~^attachment attribute-at
1";\
3203 read hl; echo $hl; vput vexpr es substr "$hl" 0 3
3205 xcall bail "attach
0-3"
3208 echo "~^attachment insert .
/.treadctl
=ascii
";\
3209 read hl; echo $hl; call xerr "$hl" "attach
1-1"
3210 echo "~^attachment list
";\
3211 read es; echo $es;call xerr "$es" "attach
1-2"
3213 echo "~^attachment attribute .
/.treadctl
";\
3214 read es; echo $es;call xerr "$es" "attach
1-3"
3216 echo "~^attachment attribute .treadctl
";\
3217 read es; echo $es;call xerr "$es" "attach
1-4"
3219 echo "~^attachment attribute-at
1";\
3220 read es; echo $es;call xerr "$es" "attach
1-5"
3223 echo "~^attachment attribute-set .
/.treadctl filename rctl
";\
3224 read es; echo $es;call xerr "$es" "attach
1-6"
3225 echo "~^attachment attribute-set .treadctl content-description Au
";\
3226 read es; echo $es;call xerr "$es" "attach
1-7"
3227 echo "~^attachment attribute-set-at
1 content-id
<10.du@ich
>";\
3228 read es; echo $es;call xerr "$es" "attach
1-8"
3230 echo "~^attachment attribute .
/.treadctl
";\
3231 read es; echo $es;call xerr "$es" "attach
1-9"
3233 echo "~^attachment attribute .treadctl
";\
3234 read es; echo $es;call xerr "$es" "attach
1-10"
3236 echo "~^attachment attribute rctl
";\
3237 read es; echo $es;call xerr "$es" "attach
1-11"
3239 echo "~^attachment attribute-at
1";\
3240 read es; echo $es;call xerr "$es" "attach
1-12"
3244 echo "~^attachment insert .
/.tattach
=latin1
";\
3245 read hl; echo $hl; call xerr "$hl" "attach
2-1"
3246 echo "~^attachment list
";\
3247 read es; echo $es;call xerr "$es" "attach
2-2"
3249 echo "~^attachment attribute .
/.tattach
";\
3250 read es; echo $es;call xerr "$es" "attach
2-3"
3252 echo "~^attachment attribute .tattach
";\
3253 read es; echo $es;call xerr "$es" "attach
2-4"
3255 echo "~^attachment attribute-at
2";\
3256 read es; echo $es;call xerr "$es" "attach
2-5"
3259 echo "~^attachment attribute-set .
/.tattach filename tat
";\
3260 read es; echo $es;call xerr "$es" "attach
2-6"
3262 "~^attachment attribute-set .tattach content-description Au2
";\
3263 read es; echo $es;call xerr "$es" "attach
2-7"
3264 echo "~^attachment attribute-set-at
2 content-id
<20.du@wir
>";\
3265 read es; echo $es;call xerr "$es" "attach
2-8"
3267 "~^attachment attribute-set-at
2 content-type application
/x-sh
";\
3268 read es; echo $es;call xerr "$es" "attach
2-9"
3270 echo "~^attachment attribute .
/.tattach
";\
3271 read es; echo $es;call xerr "$es" "attach
2-10"
3273 echo "~^attachment attribute .tattach
";\
3274 read es; echo $es;call xerr "$es" "attach
2-11"
3276 echo "~^attachment attribute tat
";\
3277 read es; echo $es;call xerr "$es" "attach
2-12"
3279 echo "~^attachment attribute-at
2";\
3280 read es; echo $es;call xerr "$es" "attach
2-13"
3284 if [ "$t_remove" == "" ]
3288 echo "~^attachment remove .
/.treadctl
"; read es;\
3289 call xerr $es "attach
3-1"
3290 echo "~^attachment remove .
/.tattach
"; read es;\
3291 call xerr $es "attach
3-2"
3292 echo "~^ attachment remove .
/.treadctl
"; read es;\
3293 vput vexpr es substr $es 0 3
3295 xcall bail "attach
3-3"
3297 echo "~^ attachment remove .
/.tattach
"; read es;\
3298 vput vexpr es substr $es 0 3
3300 xcall bail "attach
3-4"
3302 echo "~^attachment list
"; read es;\
3303 vput vexpr es substr $es 0 3
3305 xcall bail "attach
3-5"
3309 echo "~^attachment insert .
/.tattach
=latin1
";\
3310 read hl; echo $hl; call xerr "$hl" "attach
4-1"
3311 echo "~^attachment insert .
/.tattach
=latin1
";\
3312 read hl; echo $hl; call xerr "$hl" "attach
4-2"
3313 echo "~^attachment list
";\
3314 read es; echo $es;call xerr "$es" "attach
4-3"
3316 echo "~^ attachment remove .tattach
"; read es;\
3317 vput vexpr es substr $es 0 3
3319 xcall bail "attach
4-4 $es"
3321 echo "~^attachment remove-at T
"; read es;\
3322 vput vexpr es substr $es 0 3
3324 xcall bail "attach
4-5"
3326 echo "~^attachment remove .
/.tattach
"; read es;\
3327 call xerr $es "attach
4-6"
3328 echo "~^attachment remove .
/.tattach
"; read es;\
3329 call xerr $es "attach
4-7"
3330 echo "~^ attachment remove .
/.tattach
"; read es;\
3331 vput vexpr es substr $es 0 3
3333 xcall bail "attach
4-8 $es"
3335 echo "~^attachment list
"; read es;\
3336 vput vexpr es substr $es 0 3
3338 xcall bail "attach
4-9"
3342 echo "~^attachment insert .
/.tattach
=latin1
";\
3343 read hl; echo $hl; call xerr "$hl" "attach
5-1"
3344 echo "~^attachment insert .
/.tattach
=latin1
";\
3345 read hl; echo $hl; call xerr "$hl" "attach
5-2"
3346 echo "~^attachment insert .
/.tattach
=latin1
";\
3347 read hl; echo $hl; call xerr "$hl" "attach
5-3"
3348 echo "~^attachment list
";\
3349 read es; echo $es;call xerr "$es" "attach
5-4"
3352 echo "~^attachment remove-at
3"; read es;\
3353 call xerr $es "attach
5-5"
3354 echo "~^attachment remove-at
3"; read es;\
3355 vput vexpr es substr $es 0 3
3357 xcall bail "attach
5-6"
3359 echo "~^attachment remove-at
2"; read es;\
3360 call xerr $es "attach
5-7"
3361 echo "~^attachment remove-at
2"; read es;\
3362 vput vexpr es substr $es 0 3
3364 xcall bail "attach
5-8"
3366 echo "~^attachment remove-at
1"; read es;\
3367 call xerr $es "attach
5-9"
3368 echo "~^attachment remove-at
1"; read es;\
3369 vput vexpr es substr $es 0 3
3371 xcall bail "attach
5-10"
3374 echo "~^attachment list
"; read es;\
3375 vput vexpr es substr $es 0 3
3377 xcall bail "attach
5-11"
3381 echo "~^attachment insert .
/.tattach
=latin1
";\
3382 read hl; echo $hl; call xerr "$hl" "attach
6-1"
3383 echo "~^attachment insert .
/.tattach
=latin1
";\
3384 read hl; echo $hl; call xerr "$hl" "attach
6-2"
3385 echo "~^attachment insert .
/.tattach
=latin1
";\
3386 read hl; echo $hl; call xerr "$hl" "attach
6-3"
3387 echo "~^attachment list
";\
3388 read es; echo $es;call xerr "$es" "attach
6-4"
3391 echo "~^attachment remove-at
1"; read es;\
3392 call xerr $es "attach
6-5"
3393 echo "~^attachment remove-at
1"; read es;\
3394 call xerr $es "attach
6-6"
3395 echo "~^attachment remove-at
1"; read es;\
3396 call xerr $es "attach
6-7"
3397 echo "~^attachment remove-at
1"; read es;\
3398 vput vexpr es substr $es 0 3
3400 xcall bail "attach
6-8"
3403 echo "~^attachment list
"; read es;\
3404 vput vexpr es substr $es 0 3
3406 xcall bail "attach
6-9"
3418 echo on-compose-enter, mailx-command<$mailx-command>
3419 alternates alter1@exam.ple alter2@exam.ple
3421 set autocc='alter1@exam.ple alter2@exam.ple'
3422 echo mailx-from<$mailx-from> mailx-sender<$mailx-sender>
3423 echo mailx-subject<$mailx-subject>
3424 echo mailx-to<$mailx-to> mailx-cc<$mailx-cc> mailx-bcc<$mailx-bcc>
3425 echo mailx-raw-to<$mailx-raw-to> mailx-raw-cc<$mailx-raw-cc> \
3426 mailx-raw-bcc<$mailx-raw-bcc>
3427 echo mailx-orig-from<$mailx-orig-from> mailx-orig-to<$mailx-orig-to> \
3428 mailx-orig-cc<$mailx-orig-cc> mailx-orig-bcc<$mailx-orig-bcc>
3431 echo on-compose-leave, mailx-command<$mailx-command>
3433 eval alternates $al alter3@exam.ple alter4@exam.ple
3435 set autobcc='alter3@exam.ple alter4@exam.ple'
3436 echo mailx-from<$mailx-from> mailx-sender<$mailx-sender>
3437 echo mailx-subject<$mailx-subject>
3438 echo mailx-to<$mailx-to> mailx-cc<$mailx-cc> mailx-bcc<$mailx-bcc>
3439 echo mailx-raw-to<$mailx-raw-to> mailx-raw-cc<$mailx-raw-cc> \
3440 mailx-raw-bcc<$mailx-raw-bcc>
3441 echo mailx-orig-from<$mailx-orig-from> mailx-orig-to<$mailx-orig-to> \
3442 mailx-orig-cc<$mailx-orig-cc> mailx-orig-bcc<$mailx-orig-bcc>
3445 echo on-compose-cleanup, mailx-command<$mailx-command>
3448 echo mailx-from<$mailx-from> mailx-sender<$mailx-sender>
3449 echo mailx-subject<$mailx-subject>
3450 echo mailx-to<$mailx-to> mailx-cc<$mailx-cc> mailx-bcc<$mailx-bcc>
3451 echo mailx-raw-to<$mailx-raw-to> mailx-raw-cc<$mailx-raw-cc> \
3452 mailx-raw-bcc<$mailx-raw-bcc>
3453 echo mailx-orig-from<$mailx-orig-from> mailx-orig-to<$mailx-orig-to> \
3454 mailx-orig-cc<$mailx-orig-cc> mailx-orig-bcc<$mailx-orig-bcc>
3456 wysh set on-compose-splice=t_ocs \
3457 on-compose-enter=t_oce on-compose-leave=t_ocl \
3458 on-compose-cleanup=t_occ
3462 printf 'm this-goes@nowhere\nbody\n!.\n' |
3463 ${MAILX} ${ARGS} -Snomemdebug -Sescape=! -Sstealthmua=noagent \
3464 -X'source ./.trc' -Smta=./.tsendmail.sh \
3466 ${cat} ./.tall >> "${MBOX}"
3467 check behave:compose_hooks-1 0 "${MBOX}" '522535560 10101'
3470 printf 'm this-goes@nowhere\nbody\n!.\n' |
3471 ${MAILX} ${ARGS} -Snomemdebug -Sescape=! -Sstealthmua=noagent \
3472 -St_remove=1 -X'source ./.trc' -Smta=./.tsendmail.sh \
3474 ${cat} ./.tall >> "${MBOX}"
3475 check behave:compose_hooks-2 0 "${MBOX}" '3654000499 12535'
3479 # Some state machine stress, shell compose hook, localopts for hook, etc.
3480 # readctl in child. ~r as HERE document
3482 printf 'm ex@am.ple\nbody\n!.
3483 echon ${mailx-command}${mailx-subject}
3484 echon ${mailx-from}${mailx-sender}
3485 echon ${mailx-to}${mailx-cc}${mailx-bcc}
3486 echon ${mailx-raw-to}${mailx-raw-cc}${mailx-raw-bcc}
3487 echon ${mailx-orig-from}${mailx-orig-to}${mailx-orig-gcc}${mailx-orig-bcc}
3488 var t_oce t_ocs t_ocs_sh t_ocl t_occ autocc
3489 ' | ${MAILX} ${ARGS} -Snomemdebug -Sescape=! \
3490 -Smta=./.tsendmail.sh \
3493 echoerr "Failed
: $1. Bailing out
"; echo "~x
"; xit
3496 vput vexpr es substr "$1" 0 1
3501 define read_mline_res {
3502 read hl; wysh set len=$? es=$! en=$^ERRNAME;\
3503 echo $len/$es/$^ERRNAME: $hl
3504 if [ $es -ne $^ERR-NONE ]
3505 xcall bail read_mline_res
3507 \xcall read_mline_res
3511 vput vexpr i + 1 "$2"
3513 vput vexpr j % $i 10
3520 eval \\$j _work $1 $i
3523 vput vexpr i + $i "$1"
3527 wysh set line; read line;wysh set es=$? en=$^ERRNAME ;\
3528 echo read:$es/$en: $line
3529 if [ "${es}" -ne -1 ]
3532 readctl remove $cwd/.treadctl; echo readctl remove:$?/$^ERRNAME
3537 echo "~^header list
"; read hl; echo $hl;\
3538 vput vexpr es substr "$hl" 0 1
3540 xcall bail "header list
"
3543 call _work 1; echo $?
3544 echo "~^header insert cc splicy diet
<splice@exam.ple
> spliced
";\
3545 read es; echo $es; vput vexpr es substr "$es" 0 1
3547 xcall bail "be diet
"
3549 echo "~^header insert cc
<splice2@exam.ple
>";\
3550 read es; echo $es; vput vexpr es substr "$es" 0 1
3552 xcall bail "be diet2
"
3555 call _work 2; echo $?
3556 echo "~^header insert bcc juicy juice
<juice@exam.ple
> spliced
";\
3557 read es; echo $es;vput vexpr es substr "$es" 0 1
3559 xcall bail "be juicy
"
3561 echo "~^header insert bcc juice2@exam.ple
";\
3562 read es; echo $es;vput vexpr es substr "$es" 0 1
3564 xcall bail "be juicy2
"
3566 echo "~^header insert bcc juice3
<juice3@exam.ple
>";\
3567 read es; echo $es;vput vexpr es substr "$es" 0 1
3569 xcall bail "be juicy3
"
3571 echo "~^header insert bcc juice4@exam.ple
";\
3572 read es; echo $es;vput vexpr es substr "$es" 0 1
3574 xcall bail "be juicy4
"
3577 echo "~^header remove-at bcc
3";\
3578 read es; echo $es;vput vexpr es substr "$es" 0 1
3580 xcall bail "remove juicy5
"
3582 echo "~^header remove-at bcc
2";\
3583 read es; echo $es;vput vexpr es substr "$es" 0 1
3585 xcall bail "remove juicy6
"
3587 echo "~^header remove-at bcc
3";\
3588 read es; echo $es;vput vexpr es substr "$es" 0 3
3590 xcall bail "failed to remove-at
"
3592 # Add duplicates which ought to be removed!
3593 echo "~^header insert bcc juice4@exam.ple
";\
3594 read es; echo $es;vput vexpr es substr "$es" 0 1
3596 xcall bail "be juicy4-1
"
3598 echo "~^header insert bcc juice4@exam.ple
";\
3599 read es; echo $es;vput vexpr es substr "$es" 0 1
3601 xcall bail "be juicy4-2
"
3603 echo "~^header insert bcc juice4@exam.ple
";\
3604 read es; echo $es;vput vexpr es substr "$es" 0 1
3606 xcall bail "be juicy4-3
"
3611 call _work 3; echo $?
3613 vput ! i echo just knock if you can hear me;\
3615 while [ $i -lt 24 ]; do printf "%s
" $i; i=`expr $i + 1`; done;\
3617 echon shell-cmd says $?/$^ERRNAME: $i
3618 echo "~x will not become interpreted
, we are reading
until __EOT
"
3620 read r_status; echo "~~r status output
: $r_status"
3621 echo "~
:echo $? $
! $^ERRNAME
"
3623 echo "~~r status from parent
: $r_status"
3626 call _work 4; echo $?
3627 vput cwd cwd;echo cwd:$?
3628 readctl create $cwd/.treadctl ;echo readctl:$?/$^ERRNAME;\
3632 call _work 5; echo $?
3633 echo "~^header show MAILX-Command
"; read es;\
3634 call xerr $es "t_header
1000"; call read_mline_res
3635 echo "~^header show MAILX-raw-TO
"; read es;\
3636 call xerr $es "t_header
1001"; xcall read_mline_res
3638 echoerr IT IS WRONG IF YOU SEE THIS
3641 echo on-compose-enter, mailx-command<$mailx-command>
3642 set t_oce autobcc=oce@exam.ple
3643 alternates alter1@exam.ple alter2@exam.ple
3645 echo mailx-from<$mailx-from> mailx-sender<$mailx-sender>
3646 echo mailx-subject<$mailx-subject>
3647 echo mailx-to<$mailx-to> mailx-cc<$mailx-cc> mailx-bcc<$mailx-bcc>
3648 echo mailx-raw-to<$mailx-raw-to> mailx-raw-cc<$mailx-raw-cc> \
3649 mailx-raw-bcc<$mailx-raw-bcc>
3650 echo mailx-orig-from<$mailx-orig-from> \
3651 mailx-orig-to<$mailx-orig-to> \
3652 mailx-orig-cc<$mailx-orig-cc> mailx-orig-bcc<$mailx-orig-bcc>
3655 echo on-compose-leave, mailx-command<$mailx-command>
3656 set t_ocl autocc=ocl@exam.ple
3658 alternates alter3@exam.ple alter4@exam.ple
3660 echo mailx-from<$mailx-from> mailx-sender<$mailx-sender>
3661 echo mailx-subject<$mailx-subject>
3662 echo mailx-to<$mailx-to> mailx-cc<$mailx-cc> mailx-bcc<$mailx-bcc>
3663 echo mailx-raw-to<$mailx-raw-to> mailx-raw-cc<$mailx-raw-cc> \
3664 mailx-raw-bcc<$mailx-raw-bcc>
3665 echo mailx-orig-from<$mailx-orig-from> \
3666 mailx-orig-to<$mailx-orig-to> \
3667 mailx-orig-cc<$mailx-orig-cc> mailx-orig-bcc<$mailx-orig-bcc>
3670 echo on-compose-cleanup, mailx-command<$mailx-command>
3671 set t_occ autocc=occ@exam.ple
3674 echo mailx-from<$mailx-from> mailx-sender<$mailx-sender>
3675 echo mailx-subject<$mailx-subject>
3676 echo mailx-to<$mailx-to> mailx-cc<$mailx-cc> mailx-bcc<$mailx-bcc>
3677 echo mailx-raw-to<$mailx-raw-to> mailx-raw-cc<$mailx-raw-cc> \
3678 mailx-raw-bcc<$mailx-raw-bcc>
3679 echo mailx-orig-from<$mailx-orig-from> \
3680 mailx-orig-to<$mailx-orig-to> \
3681 mailx-orig-cc<$mailx-orig-cc> mailx-orig-bcc<$mailx-orig-bcc>
3683 wysh set on-compose-splice=t_ocs \
3684 on-compose-splice-shell="read ver
;printf \"t_ocs-shell
\\n\
3685 ~t shell@exam.ple
\\n~
:set t_ocs_sh
\\n
\"" \
3686 on-compose-enter=t_oce on-compose-leave=t_ocl \
3687 on-compose-cleanup=t_occ
3689 ex0_test behave:compose_hooks-3-estat
3690 ${cat} ./.tnotes >> "${MBOX}"
3692 check behave:compose_hooks-3 - "${MBOX}" '679526364 2431'
3694 # Reply, forward, resend, Resend
3697 printf 'set from=f1@z\nm t1@z\nb1\n!.\nset from=f2@z\nm t2@z\nb2\n!.\n' |
3698 ${MAILX} ${ARGS} -Snomemdebug -Sescape=! \
3699 -Smta=./.tsendmail.sh
3702 echo start: $? $! $^ERRNAME
3704 echo File: $? $! $^ERRNAME;echo;echo
3706 this is content of reply 1
3708 echo reply 1: $? $! $^ERRNAME;echo;echo
3710 this is content of Reply 1 2
3712 echo Reply 1 2: $? $! $^ERRNAME;echo;echo
3713 forward 1 fwdex@am.ple
3714 this is content of forward 1
3716 echo forward 1: $? $! $^ERRNAME;echo;echo
3717 resend 1 2 resendex@am.ple
3718 echo resend 1 2: $? $! $^ERRNAME;echo;echo
3719 Resend 1 2 Resendex@am.ple
3720 echo Resend 1 2: $? $! $^ERRNAME;echo;echo
3722 ${MAILX} ${ARGS} -Snomemdebug -Sescape=! \
3723 -Smta=./.tsendmail.sh \
3726 echoerr "Failed
: $1. Bailing out
"; echo "~x
"; xit
3729 vput vexpr es substr "$1" 0 1
3734 define read_mline_res {
3735 read hl; wysh set len=$? es=$! en=$^ERRNAME;\
3736 echo mline_res:$len/$es/$^ERRNAME: $hl
3737 if [ $es -ne $^ERR-NONE ]
3738 xcall bail read_mline_res
3740 \xcall read_mline_res
3744 echo "~^header show
$1"; read es;\
3745 call xerr $es "work_hl
$1"; echo $1; call read_mline_res
3753 echo t_ocs version $ver
3754 echo "~^header list
"; read hl; echo $hl;\
3755 echoerr the header list is $hl;\
3756 call xerr "$hl" "header list
"
3757 eval vpospar set $hl
3760 echoerr IT IS WRONG IF YOU SEE THIS
3763 echo on-XY-enter, mailx-command<$mailx-command>
3764 set t_oce autobcc=oce@exam.ple
3765 echo mailx-from<$mailx-from> mailx-sender<$mailx-sender>
3766 echo mailx-subject<$mailx-subject>
3767 echo mailx-to<$mailx-to> mailx-cc<$mailx-cc> mailx-bcc<$mailx-bcc>
3768 echo mailx-raw-to<$mailx-raw-to> mailx-raw-cc<$mailx-raw-cc> \
3769 mailx-raw-bcc<$mailx-raw-bcc>
3770 echo mailx-orig-from<$mailx-orig-from> \
3771 mailx-orig-to<$mailx-orig-to> \
3772 mailx-orig-cc<$mailx-orig-cc> mailx-orig-bcc<$mailx-orig-bcc>
3775 echo on-XY-leave, mailx-command<$mailx-command>
3776 set t_ocl autocc=ocl@exam.ple
3777 echo mailx-from<$mailx-from> mailx-sender<$mailx-sender>
3778 echo mailx-subject<$mailx-subject>
3779 echo mailx-to<$mailx-to> mailx-cc<$mailx-cc> mailx-bcc<$mailx-bcc>
3780 echo mailx-raw-to<$mailx-raw-to> mailx-raw-cc<$mailx-raw-cc> \
3781 mailx-raw-bcc<$mailx-raw-bcc>
3782 echo mailx-orig-from<$mailx-orig-from> \
3783 mailx-orig-to<$mailx-orig-to> \
3784 mailx-orig-cc<$mailx-orig-cc> mailx-orig-bcc<$mailx-orig-bcc>
3787 echo on-XY-cleanup, mailx-command<$mailx-command>
3788 set t_occ autocc=occ@exam.ple
3789 echo mailx-from<$mailx-from> mailx-sender<$mailx-sender>
3790 echo mailx-subject<$mailx-subject>
3791 echo mailx-to<$mailx-to> mailx-cc<$mailx-cc> mailx-bcc<$mailx-bcc>
3792 echo mailx-raw-to<$mailx-raw-to> mailx-raw-cc<$mailx-raw-cc> \
3793 mailx-raw-bcc<$mailx-raw-bcc>
3794 echo mailx-orig-from<$mailx-orig-from> \
3795 mailx-orig-to<$mailx-orig-to> \
3796 mailx-orig-cc<$mailx-orig-cc> mailx-orig-bcc<$mailx-orig-bcc>
3798 wysh set on-compose-splice=t_ocs \
3799 on-compose-enter=t_oce on-compose-leave=t_ocl \
3800 on-compose-cleanup=t_occ \
3801 on-resend-enter=t_oce on-resend-cleanup=t_occ
3803 ex0_test behave:compose_hooks-4-estat
3804 ${cat} ./.tnotes >> "${MBOX}"
3806 check behave:compose_hooks-4 - "${MBOX}" '3038884027 7516'
3811 t_behave_mass_recipients() {
3812 t_prolog t_behave_mass_recipients
3813 TRAP_EXIT_ADDONS=".
/.t
*"
3815 ${cat} <<-_EOT > ./.tsendmail.sh
3817 (echo 'From Eucalyptus Sat Jul 08 21:14:57 2017' && ${cat} && echo
3820 chmod 0755 ./.tsendmail.sh
3822 ${cat} <<'__EOT__' > ./.trc
3824 echoerr "Failed
: $1. Bailing out
"; echo "~x
"; xit
3827 wysh set nr=$1 hn=$2
3828 echo "~
$hn $hn$nr@
$hn"; echo '~:echo $?'; read es
3830 xcall bail "ins_addr
$hn 1-$nr"
3832 vput vexpr nr + $nr 1
3833 if [ "$nr" -le "$maximum" ]
3834 xcall ins_addr $nr $hn
3838 wysh set nr=$1 hn=$2
3839 alternates $hn$nr@$hn
3840 vput vexpr nr + $nr 2
3841 if [ "$nr" -le "$maximum" ]
3842 xcall bld_alter $nr $hn
3852 if [ "$t_remove" != '' ]
3857 set on-compose-splice=t_ocs on-compose-leave=t_ocl
3861 printf 'm this-goes@nowhere\nbody\n!.\n' |
3862 ${MAILX} ${ARGS} -Snomemdebug -Sescape=! -Sstealthmua=noagent \
3863 -X'source ./.trc' -Smta=./.tsendmail.sh -Smaximum=2001 \
3865 ${cat} ./.tall >> "${MBOX}"
3866 check behave:mass_recipients-1 0 "${MBOX}" '2912243346 51526'
3869 printf 'm this-goes@nowhere\nbody\n!.\n' |
3870 ${MAILX} ${ARGS} -Snomemdebug -Sescape=! -Sstealthmua=noagent \
3871 -St_remove=1 -X'source ./.trc' -Smta=./.tsendmail.sh -Smaximum=2001 \
3873 ${cat} ./.tall >> "${MBOX}"
3874 check behave:mass_recipients-2 0 "${MBOX}" '4097804632 34394'
3879 t_behave_mime_types_load_control() {
3880 t_prolog t_behave_mime_types_load_control
3881 TRAP_EXIT_ADDONS=".
/.t
*"
3883 ${cat} <<-_EOT > ./.tmts1
3884 @ application/mathml+xml mathml
3886 ${cat} <<-_EOT > ./.tmts2
3887 @ x-conference/x-cooltalk ice
3889 @ application/aga-aga aga
3892 ${cat} <<-_EOT > ./.tmts1.mathml
3893 <head>nonsense ML</head>
3895 ${cat} <<-_EOT > ./.tmts2.ice
3898 printf 'of which the c\x01rack is coming soon' > ./.tmtsx.doom
3899 printf 'of which the c\x01rack is coming soon' > ./.tmtsx.aga
3913 ' "${MBOX}" "${MBOX}" |
3915 -Smimetypes-load-control=f=./.tmts1,f=./.tmts2 \
3917 ex0_test behave:mime_types_load_control
3919 ${cat} "${MBOX}" >> ./.tout
3920 check behave:mime_types_load_control-1 - ./.tout '1441260727 2449'
3922 echo type | ${MAILX} ${ARGS} -R \
3923 -Smimetypes-load-control=f=./.tmts1,f=./.tmts3 \
3924 -f "${MBOX}" >> ./.tout 2>&1
3925 check behave:mime_types_load_control-2 0 ./.tout '1441391438 3646'
3930 t_behave_lreply_futh_rth_etc() {
3931 t_prolog t_behave_lreply_futh_rth_etc
3932 TRAP_EXIT_ADDONS=".
/.t
*"
3934 ${cat} <<-_EOT > ./.tsendmail.sh
3936 (echo 'From HumulusLupulus Thu Jul 27 14:41:20 2017' && ${cat} && echo
3939 chmod 0755 ./.tsendmail.sh
3941 ${cat} <<-_EOT > ./.tmbox
3942 From neverneverland Sun Jul 23 13:46:25 2017
3943 Subject: Bugstop: five miles out 1
3944 Reply-To: mister originator2 <mr2@originator>, bugstop@five.miles.out
3945 From: mister originator <mr@originator>
3946 To: bugstop-commit@five.miles.out, laber@backe.eu
3948 Mail-Followup-To: bugstop@five.miles.out, laber@backe.eu, is@a.list
3949 In-reply-to: <20170719111113.bkcMz%laber@backe.eu>
3950 Date: Wed, 19 Jul 2017 09:22:57 -0400
3951 Message-Id: <20170719132257.766AF781267@originator>
3954 > |Sorry, I think I misunderstand something. I would think that
3958 From neverneverland Fri Jul 7 22:39:11 2017
3959 Subject: Bugstop: five miles out 2
3960 Reply-To: mister originator2<mr2@originator>,bugstop@five.miles.out,is@a.list
3961 Content-Transfer-Encoding: 7bit
3962 From: mister originator <mr@originator>
3963 To: bugstop-commit@five.miles.out
3965 Message-ID: <149945963975.28888.6950788126957753723.reportbug@five.miles.out>
3966 Date: Fri, 07 Jul 2017 16:33:59 -0400
3969 capable of changing back.
3971 From neverneverland Fri Jul 7 22:42:00 2017
3972 Subject: Bugstop: five miles out 3
3973 Reply-To: mister originator2 <mr2@originator>, bugstop@five.miles.out
3974 Content-Transfer-Encoding: 7bit
3975 From: mister originator <mr@originator>
3976 To: bugstop-commit@five.miles.out
3978 Message-ID: <149945963975.28888.6950788126957753746.reportbug@five.miles.out>
3979 Date: Fri, 07 Jul 2017 16:33:59 -0400
3980 List-Post: <mailto:bugstop@five.miles.out>
3983 are you ready, boots?
3985 From neverneverland Sat Aug 19 23:15:00 2017
3986 Subject: Bugstop: five miles out 4
3987 Reply-To: mister originator2 <mr2@originator>, bugstop@five.miles.out
3988 Content-Transfer-Encoding: 7bit
3989 From: mister originator <mr@originator>
3990 To: bugstop@five.miles.out
3992 Message-ID: <149945963975.28888.6950788126qtewrqwer.reportbug@five.miles.out>
3993 Date: Fri, 07 Jul 2017 16:33:59 -0400
3994 List-Post: <mailto:bugstop@five.miles.out>
3997 are you ready, boots?
4002 ${cat} <<-'_EOT' | ${MAILX} ${ARGS} -Sescape=! -Smta=./.tsendmail.sh \
4003 -Rf ./.tmbox >> "${MBOX}" 2>&1
4005 wysh set m="This is text of
\"reply
${1}.
"
4016 echo -----After reply
$1.1
- $1.3
: $?
/$^ERRNAME
4019 wysh
set m
="This is text of \"Reply ${1}."
4025 echo -----After Reply $1.$2: $?/$^ERRNAME
4034 wysh set m="This is text of \"Lreply ${1}." on-compose-splice=_Lh n=$2
4038 # We need two indirections for this test: one for the case that Lreply
4039 # fails because of missing recipients: we need to read EOF next, thus
4040 # place this in _Ls last; and second for the succeeding cases EOF is
4041 # not what these should read, so go over the backside and splice it in!
4043 echo -----After Lreply $1.$2: $?/$^ERRNAME
4046 localopts call-fixate yes
4048 call R $1 1; call R $1 2; call R $1 3; call R $1 4
4049 call L $1 1; call L $1 2; call L $1 3
4052 echo;echo '===== CHANGING
=== '"$*"' =====';echo
4056 set from=laber@backe.eu
4059 call tweak set reply-to-honour
4061 call tweak set followup-to
4063 call tweak set followup-to-honour
4065 call tweak mlist bugstop@five.miles.out
4067 call tweak mlsubscribe bugstop@five.miles.out
4069 call tweak set recipients-in-cc
4073 check behave:lreply_futh_rth_etc-1 0 "${MBOX}" '940818845 29373'
4077 ${cat} <<-_EOT > ./.tmbox
4078 From tom@i-i.example Thu Oct 26 03:15:55 2017
4079 Date: Wed, 25 Oct 2017 21:15:46 -0400
4080 From: tom <tom@i-i.example>
4081 To: Steffen Nurpmeso <steffen@sdaoden.eu>
4082 Cc: tom <tom@i-i.example>
4083 Subject: Re: xxxx yyyyyyyy configure does not really like a missing zzzzz
4084 Message-ID: <20171026011546.GA11643@i-i.example>
4085 Reply-To: tom@i-i.example
4086 References: <20171025214601.T2pNd%steffen@sdaoden.eu>
4087 In-Reply-To: <20171025214601.T2pNd%steffen@sdaoden.eu>
4090 The report's useful
:-)
4093 printf 'reply 1\nthank you\n!.\n' |
4094 ${MAILX} ${ARGS} -Sescape=! -Smta=.
/.tsendmail.sh
-Sreply-to-honour \
4095 -Rf .
/.tmbox
> "${MBOX}" 2>&1
4096 check behave
:lreply_futh_rth_etc-2
0 "${MBOX}" '1045866991 331'
4101 t_behave_xxxheads_rfc2047
() {
4102 t_prolog t_behave_xxxheads_rfc2047
4103 TRAP_EXIT_ADDONS
="./.t*"
4105 ${cat} <<-_EOT > ./.tsendmail.sh
4107 (echo 'From GentianaLutea Mon Dec 04 17:15:29 2017' && ${cat} &&
4110 chmod 0755 .
/.tsendmail.sh
4114 echo |
${MAILX} ${ARGS} ${ADDARG_UNI} \
4115 -s 'a̲b̲c̲d̲e̲f̲h̲i̲k̲l̲m̲n̲o̲r̲s̲t̲u̲v̲w̲x̲z̲a̲b̲c̲d̲e̲f̲h̲i̲k̲l̲m̲n̲o̲r̲s̲t̲u̲v̲w̲x̲z̲' \
4117 check behave
:xxxheads_rfc2047-1
0 "${MBOX}" '3370931614 375'
4119 # Single word (overlong line split -- bad standard! Requires injection of
4120 # artificial data!! But can be prevented by using RFC 2047 encoding)
4122 i
=`${awk} 'BEGIN{for(i=0; i<92; ++i) printf "0123456789_"}'`
4123 echo |
${MAILX} ${ARGS} -s "${i}" "${MBOX}"
4124 check behave:xxxheads_rfc2047-2 0 "${MBOX}" '489922370 1718'
4126 # Combination of encoded words, space and tabs of varying sort
4128 echo | ${MAILX} ${ARGS} ${ADDARG_UNI} \
4129 -s "1Abrä Kaspas1
2Abra Katä b_kaspas2 \
4130 3Abrä Kaspas3
4Abrä Kaspas4
5Abrä Kaspas5 \
4131 6Abra Kaspas6
7Abrä Kaspas7
8Abra Kaspas8 \
4132 9Abra Kaspastäb4-3
10Abra Kaspas1 _
11Abra Katäb1 \
4133 12Abra Kadabrä
1 After Tab after Täb this is NUTS
" \
4135 check behave:xxxheads_rfc2047-3 0 "${MBOX}" '1676887734 591'
4137 # Overlong multibyte sequence that must be forcefully split
4138 # todo This works even before v15.0, but only by accident
4140 echo | ${MAILX} ${ARGS} ${ADDARG_UNI} \
4141 -s "✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄\
4142 ✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄\
4143 ✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄✄
" \
4145 check behave:xxxheads_rfc2047-4 0 "${MBOX}" '3029301775 659'
4149 echo | ${MAILX} ${ARGS} \
4150 -s "1-1 B2 B3 B4 B5 B6 B\
4151 1-2 B2 B3 B4 B5 B6 B\
4152 1-3 B2 B3 B4 B5 B6 B\
4153 1-4 B2 B3 B4 B5 B6 B\
4154 1-5 B2 B3 B4 B5 B6 B\
4155 1-6 B2 B3 B4 B5 B6
" \
4157 check behave:xxxheads_rfc2047-5 0 "${MBOX}" '4126167195 297'
4159 # Leading and trailing WS
4161 echo | ${MAILX} ${ARGS} \
4162 -s " 2-1 B2 B3 B4 B5 B6 B\
4163 1-2 B2 B3 B4 B5 B6 B\
4164 1-3 B2 B3 B4 B5 B6 B\
4165 1-4 B2 B3 B4 B5 B6
" \
4167 check behave:xxxheads_rfc2047-6 0 "${MBOX}" '3600624479 236'
4169 # RFC 2047 in an address field! (Missing test caused v14.9.6!)
4171 echo "Dat Früchtchen riecht häußlich
" |
4172 ${MAILX} ${ARGS} ${ADDARG_UNI} -Sfullnames -Smta=./.tsendmail.sh \
4174 'Schnödes "Früchtchen
" <do@du> (Hä!)'
4175 check behave:xxxheads_rfc2047-7 0 "${MBOX}" '800505986 368'
4180 t_behave_rfc2231() {
4181 t_prolog t_behave_rfc2231
4182 TRAP_EXIT_ADDONS=".
/.t
*"
4185 mkdir ./.ttt || exit 1
4189 : > 'diet\ is \curd.txt'
4190 : > 'diet "is
" curd.txt'
4192 : > höde__tröge__müde__dätte__hätte__vülle__gülle__äse__äße__säuerliche__kräuter__österliche__grüße__mäh.txt
4193 : > höde__tröge__müde__dätte__hätte__vuelle__guelle__aese__aesse__sauerliche__kräuter__österliche__grüße__mäh.txt
4194 : > hööööööööööööööööö_nöööööööööööööööööööööö_düüüüüüüüüüüüüüüüüüü_bäääääääääääääääääääääääh.txt
4195 : > ✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆.txt
4197 echo bla | ${MAILX} ${ARGS} ${ADDARG_UNI} \
4198 -a ".
/.ttt
/ma
'ger.txt" -a "./.ttt/mä'ger.txt
" \
4199 -a './.ttt/diet\ is \curd.txt' -a './.ttt/diet "is
" curd.txt' \
4200 -a ./.ttt/höde-tröge.txt \
4201 -a ./.ttt/höde__tröge__müde__dätte__hätte__vülle__gülle__äse__äße__säuerliche__kräuter__österliche__grüße__mäh.txt \
4202 -a ./.ttt/höde__tröge__müde__dätte__hätte__vuelle__guelle__aese__aesse__sauerliche__kräuter__österliche__grüße__mäh.txt \
4203 -a ./.ttt/hööööööööööööööööö_nöööööööööööööööööööööö_düüüüüüüüüüüüüüüüüüü_bäääääääääääääääääääääääh.txt \
4204 -a ./.ttt/✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆✆.txt \
4206 check behave:rfc2231-1 0 "${MBOX}" '684985954 3092'
4208 # `resend' test, reusing $MBOX
4209 printf "Resend .
/.t2
\nx
\n" | ${MAILX} ${ARGS} -Rf "${MBOX}"
4210 check behave
:rfc2231-2
0 .
/.t2
'684985954 3092'
4212 printf "resend ./.t3\nx\n" |
${MAILX} ${ARGS} -Rf "${MBOX}"
4213 check behave:rfc2231-3 0 ./.t3 '3130352658 3148'
4218 t_behave_iconv_mbyte_base64() {
4219 t_prolog t_behave_iconv_mbyte_base64
4220 TRAP_EXIT_ADDONS=".
/.t
*"
4222 if [ -n "${UTF8_LOCALE}" ] && have_feat iconv &&
4223 (</dev/null iconv -f ascii -t iso-2022-jp) >/dev/null 2>&1 ||
4224 (</dev/null iconv -f ascii -t euc-jp) >/dev/null 2>&1; then
4227 echo 'behave:iconv_mbyte_base64: unsupported, skipped'
4231 ${cat} <<-_EOT > ./.tsendmail.sh
4233 (echo 'From DroseriaRotundifolia Thu Aug 03 17:26:25 2017' && ${cat} &&
4236 chmod 0755 ./.tsendmail.sh
4238 if (</dev/null iconv -f ascii -t iso-2022-jp) >/dev/null 2>&1; then
4239 cat <<-'_EOT' | LC_ALL=${UTF8_LOCALE} ${MAILX} ${ARGS} \
4240 -Smta=./.tsendmail.sh \
4241 -Sescape=! -Smime-encoding=base64 2>./.terr
4242 set ttycharset=utf-8 sendcharsets=iso-2022-jp
4244 !s Japanese from UTF-8 to ISO-2022-JP
4245 シジュウカラ科(シジュウカラか、学名 Paridae)は、鳥類スズメ目の科である。シジュウカラ(四十雀)と総称されるが、狭義にはこの1種をシジュウカラと呼ぶ。
4247 カンムリガラ(学名Parus cristatus)は、スズメ目シジュウカラ科に分類される鳥類の一種。
4250 カンムリガラ(学名Parus cristatus)は、スズメ目シジュウカラ科に分類される鳥類の一種。
4252 シジュウカラ科(シジュウカラか、学名 Paridae)は、鳥類スズメ目の科である。シジュウカラ(四十雀)と総称されるが、狭義にはこの1種をシジュウカラと呼ぶ。
4255 set ttycharset=iso-2022-jp charset-7bit=iso-2022-jp sendcharsets=utf-8
4257 !s Japanese from ISO-2022-JP to UTF-8, eh, no, also ISO-2022-JP
4258 \e$B%7%8%e%&%+%i2J!J%7%8%e%&%+%i$+!"3XL
>\e(B Paridae
\e$B!K
$O!"D;N`%9%:%aL\$N2J$G$"$k!#%7%8%e%&%+%i!J;M==?}!K$HAm>N$5$l$k$,!"695A$K$O$3$N\e(B1\e$B<o$r%7%8%e%&%+%i$H8F$V!#\e(B
4260 \e$B%+%s
%`%j%,%i!J3XL>\e(BParus cristatus\e$B!K$O!"%9%:%aL\%7%8%e%&%+%i2J$KJ,N`$5$l$kD;N
`$N0l<o!#\e(B
4263 \e$B%+%s%`%j
%,%i
!J3XL
>\e(BParus cristatus
\e$B!K
$O!"%9%:%aL\%7%8%e%&%+%i2J$KJ,N`$5$l$kD;N`$N0l<o!#\e(B
4265 \e$B%7%8%e%&%+%i2J!J%7%8%e%&%+%i$+!"3XL
>\e(B Paridae
\e$B!K
$O!"D;N`%9%:%aL\$N2J$G$"$k!#%7%8%e%&%+%i!J;M==?}!K$HAm>N$5$l$k$,!"695A$K$O$3$N\e(B1\e$B<o$r%7%8%e%&%+%i$H8F$V!#\e(B
4268 check behave
:iconv_mbyte_base64-1
0 "${MBOX}" '3428985079 1976'
4269 check behave
:iconv_mbyte_base64-2
- .
/.terr
'4294967295 0'
4271 printf 'eval f 1; write ./.twrite\n' |
4272 ${MAILX} ${ARGS} ${ADDARG_UNI} -Rf "${MBOX}" >./.tlog 2>&1
4273 check behave:iconv_mbyte_base64-3 0 ./.twrite '1259742080 686'
4274 check behave:iconv_mbyte_base64-4 - ./.tlog '3956097665 119'
4276 echo 'behave:iconv_mbyte_base64: ISO-2022-JP unsupported, skipping 1-4'
4279 if (</dev/null iconv -f ascii -t euc-jp) >/dev/null 2>&1; then
4280 rm -f "${MBOX}" ./.twrite
4281 cat <<-'_EOT' | LC_ALL=${UTF8_LOCALE} ${MAILX} ${ARGS} \
4282 -Smta=./.tsendmail.sh \
4283 -Sescape=! -Smime-encoding=base64 2>./.terr
4284 set ttycharset=utf-8 sendcharsets=euc-jp
4286 !s Japanese from UTF-8 to EUC-JP
4287 シジュウカラ科(シジュウカラか、学名 Paridae)は、鳥類スズメ目の科である。シジュウカラ(四十雀)と総称されるが、狭義にはこの1種をシジュウカラと呼ぶ。
4289 カンムリガラ(学名Parus cristatus)は、スズメ目シジュウカラ科に分類される鳥類の一種。
4292 カンムリガラ(学名Parus cristatus)は、スズメ目シジュウカラ科に分類される鳥類の一種。
4294 シジュウカラ科(シジュウカラか、学名 Paridae)は、鳥類スズメ目の科である。シジュウカラ(四十雀)と総称されるが、狭義にはこの1種をシジュウカラと呼ぶ。
4297 set ttycharset=EUC-JP sendcharsets=utf-8
4299 !s Japanese from EUC-JP to UTF-8
4300 ¥·¥¸¥å¥¦¥«¥é²Ê¡Ê¥·¥¸¥å¥¦¥«¥é¤«¡¢³Ø̾ Paridae¡Ë¤Ï¡¢Ä»Îॹ¥º¥áÌܤβʤǤ¢¤ë¡£¥·¥¸¥å¥¦¥«¥é¡Ê»Í½½¿ý¡Ë¤ÈÁí¾Î¤µ¤ì¤ë¤¬¡¢¶¹µÁ¤Ë¤Ï¤³¤Î1¼ï¤ò¥·¥¸¥å¥¦¥«¥é¤È¸Æ¤Ö¡£
4302 ¥«¥ó¥à¥ê¥¬¥é¡Ê³Ø̾Parus cristatus¡Ë¤Ï¡¢¥¹¥º¥áÌÜ¥·¥¸¥å¥¦¥«¥é²Ê¤ËʬÎव¤ì¤ëÄ»Îà¤Î°ì¼ï¡£
4305 ¥«¥ó¥à¥ê¥¬¥é¡Ê³Ø̾Parus cristatus¡Ë¤Ï¡¢¥¹¥º¥áÌÜ¥·¥¸¥å¥¦¥«¥é²Ê¤ËʬÎव¤ì¤ëÄ»Îà¤Î°ì¼ï¡£
4307 ¥·¥¸¥å¥¦¥«¥é²Ê¡Ê¥·¥¸¥å¥¦¥«¥é¤«¡¢³Ø̾ Paridae¡Ë¤Ï¡¢Ä»Îॹ¥º¥áÌܤβʤǤ¢¤ë¡£¥·¥¸¥å¥¦¥«¥é¡Ê»Í½½¿ý¡Ë¤ÈÁí¾Î¤µ¤ì¤ë¤¬¡¢¶¹µÁ¤Ë¤Ï¤³¤Î1¼ï¤ò¥·¥¸¥å¥¦¥«¥é¤È¸Æ¤Ö¡£
4310 check behave:iconv_mbyte_base64-5 0 "${MBOX}" '1686827547 2051'
4311 check behave:iconv_mbyte_base64-6 - ./.terr '4294967295 0'
4313 printf 'eval f 1; write ./.twrite\n' |
4314 ${MAILX} ${ARGS} ${ADDARG_UNI} -Rf "${MBOX}" >.
/.tlog
2>&1
4315 check behave
:iconv_mbyte_base64-7
0 .
/.twrite
'1259742080 686'
4316 check behave
:iconv_mbyte_base64-8
- .
/.tlog
'500059195 119'
4318 echo 'behave:iconv_mbyte_base64: EUC-JP unsupported, skipping 5-8'
4324 t_behave_iconv_mainbody
() {
4325 t_prolog t_behave_iconv_mainbody
4326 TRAP_EXIT_ADDONS
="./.t*"
4329 if have_feat
iconv &&
4330 (</dev
/null
iconv -f utf-8
-t ascii
) >/dev
/null
2>&1; then
4331 j
="`printf '–' | iconv -f utf-8 -t ascii 2>/dev/null`"
4332 # This assumes iconv(1) behaves like iconv(3), but well.
4333 # This is flaky because the behaviour is so non-uniform
4334 if [ ${?} -ne 0 ]; then
4335 if [ x
"${j}" = 'x?' ]; then
4340 elif [ x
"${j}" = 'x?' ]; then
4342 elif [ x
"${j}" = 'x*' ]; then
4346 if [ -z "${i}" ]; then
4347 echo 'behave:iconv_mainbody: unsupported, skipped'
4351 ${cat} <<-_EOT > ./.tsendmail.sh
4353 (echo 'From HamamelisVirginiana Fri Oct 20 16:23:21 2017' && ${cat} &&
4356 chmod 0755 .
/.tsendmail.sh
4358 printf '–' |
${MAILX} ${ARGS} ${ADDARG_UNI} -Smta=.
/.tsendmail.sh \
4359 -S charset-7bit
=us-ascii
-S charset-8bit
=utf-8 \
4360 -s '–' over-the@rain.bow
2>.
/.terr
4361 check behave
:iconv_mainbody-1
0 "${MBOX}" '3634015017 251'
4362 check behave
:iconv_mainbody-2
- .
/.terr
'4294967295 0'
4364 printf '–' |
${MAILX} ${ARGS} ${ADDARG_UNI} -Smta=.
/.tsendmail.sh \
4365 -S charset-7bit
=us-ascii
-S charset-8bit
=us-ascii \
4366 -s '–' over-the@rain.bow
2>.
/.terr
4367 exn0_test behave
:iconv_mainbody-3
4368 check behave
:iconv_mainbody-3
- "${MBOX}" '3634015017 251'
4369 check behave
:iconv_mainbody-4
- .
/.terr
'2579894983 148'
4371 printf 'p\nx\n' |
${MAILX} ${ARGS} -Rf "${MBOX}" >./.tout 2>./.terr
4373 ex0_test behave:iconv_mainbody-5-0 ${j}
4374 if [ x${i} = x1 ]; then
4375 # yuck, just assume ???, we need a test program for that one!
4376 check behave:iconv_mainbody-5-1-1 - ./.tout '1959197095 283'
4377 check behave:iconv_mainbody-5-1-1 - ./.terr '4294967295 0'
4378 elif [ x${i} = x2 ]; then
4379 check behave:iconv_mainbody-5-2-1 - ./.tout '1959197095 283'
4380 check behave:iconv_mainbody-5-2-2 - ./.terr '4294967295 0'
4381 elif [ x${i} = x3 ]; then
4382 check behave:iconv_mainbody-5-3-1 - ./.tout '3196380198 279'
4383 check behave:iconv_mainbody-5-3-2 - ./.terr '4294967295 0'
4385 check behave:iconv_mainbody-5-4-1 - ./.tout '3760313827 279'
4386 check behave:iconv_mainbody-5-4-2 - ./.terr '4294967295 0'
4392 t_behave_q_t_etc_opts() {
4393 t_prolog t_behave_q_t_etc_opts
4394 TRAP_EXIT_ADDONS=".
/.t
*"
4396 # Three tests for MIME encoding and (a bit) content classification.
4397 # At the same time testing -q FILE, < FILE and -t FILE
4398 t__put_body > ./.tin
4401 < ./.tin ${MAILX} ${ARGS} ${ADDARG_UNI} \
4402 -a ./.tin -s "`t__put_subject`" "${MBOX}"
4403 check behave:q_t_etc_opts-1 0 "${MBOX}" '3570973309 6646'
4406 < /dev/null ${MAILX} ${ARGS} ${ADDARG_UNI} \
4407 -a ./.tin -s "`t__put_subject`" -q ./.tin "${MBOX}"
4408 check behave:q_t_etc_opts-2 0 "${MBOX}" '3570973309 6646'
4411 ( echo "To
: ${MBOX}" && echo "Subject
: `t__put_subject`" && echo &&
4413 ) | ${MAILX} ${ARGS} ${ADDARG_UNI} -Snodot -a ./.tin -t
4414 check behave:q_t_etc_opts-3 0 "${MBOX}" '3570973309 6646'
4420 have_feat smime || {
4421 echo 'behave:s/mime: unsupported, skipped'
4425 t_prolog t_behave_s_mime
4426 TRAP_EXIT_ADDONS=".
/.t.conf .
/.tkey.pem .
/.tcert.pem .
/.tpair.pem
"
4427 TRAP_EXIT_ADDONS="${TRAP_EXIT_ADDONS} .
/.VERIFY .
/.DECRYPT .
/.ENCRYPT
"
4428 TRAP_EXIT_ADDONS="${TRAP_EXIT_ADDONS} .
/.tsendmail.sh
"
4430 printf 'behave:s/mime: .. generating test key and certificate ..\n'
4431 ${cat} <<-_EOT > ./.t.conf
4434 default_keyfile = keyfile.pem
4435 distinguished_name = req_distinguished_name
4436 attributes = req_attributes
4440 [ req_distinguished_name ]
4447 emailAddress = test@localhost
4452 openssl req -x509 -nodes -days 3650 -config ./.t.conf \
4453 -newkey rsa:1024 -keyout ./.tkey.pem -out ./.tcert.pem >/dev/null 2>&1
4454 ${cat} ./.tkey.pem ./.tcert.pem > ./.tpair.pem
4457 printf 'behave:s/mime:sign/verify: '
4458 echo bla | ${MAILX} ${ARGS} \
4459 -Ssmime-ca-file=./.tcert.pem -Ssmime-sign-cert=./.tpair.pem \
4460 -Ssmime-sign -Sfrom=test@localhost \
4461 -s 'S/MIME test' ./.VERIFY
4462 if [ $? -eq 0 ]; then
4473 /^Content-Description: /{ skip = 2; print; next }
4474 /^$/{ if(skip) --skip }
4477 < ./.VERIFY > "${MBOX}"
4478 check behave:s/mime:sign/verify:checksum - "${MBOX}" '2900817158 648'
4480 printf 'behave:s/mime:sign/verify:verify '
4481 printf 'verify\nx\n' |
4483 -Ssmime-ca-file=./.tcert.pem -Ssmime-sign-cert=./.tpair.pem \
4484 -Ssmime-sign -Sfrom=test@localhost \
4486 -f ./.VERIFY >/dev/null 2>&1
4487 if [ $? -eq 0 ]; then
4496 printf 'behave:s/mime:sign/verify:disproof-1 '
4497 if openssl smime -verify -CAfile ./.tcert.pem \
4498 -in ./.VERIFY >/dev/null 2>&1; then
4507 # (signing +) encryption / decryption
4508 ${cat} <<-_EOT > ./.tsendmail.sh
4510 (echo 'From Euphrasia Thu Apr 27 17:56:23 2017' && ${cat}) > ./.ENCRYPT
4512 chmod 0755 ./.tsendmail.sh
4514 printf 'behave:s/mime:encrypt+sign: '
4517 -Ssmime-force-encryption \
4518 -Ssmime-encrypt-recei@ver.com=./.tpair.pem \
4519 -Smta=./.tsendmail.sh \
4520 -Ssmime-ca-file=./.tcert.pem -Ssmime-sign-cert=./.tpair.pem \
4521 -Ssmime-sign -Sfrom=test@localhost \
4522 -s 'S/MIME test' recei@ver.com
4523 if [ $? -eq 0 ]; then
4527 printf 'error: encrypt+sign failed\n'
4530 ${sed} -e '/^$/,$d' < ./.ENCRYPT > "${MBOX}"
4531 check behave:s/mime:encrypt+sign:checksum - "${MBOX}" '1937410597 327'
4533 printf 'behave:s/mime:decrypt+verify: '
4534 printf 'decrypt ./.DECRYPT\nfi ./.DECRYPT\nverify\nx\n' |
4536 -Ssmime-force-encryption \
4537 -Ssmime-encrypt-recei@ver.com=./.tpair.pem \
4538 -Smta=./.tsendmail.sh \
4539 -Ssmime-ca-file=./.tcert.pem -Ssmime-sign-cert=./.tpair.pem \
4540 -Ssmime-sign -Sfrom=test@localhost \
4542 -f ./.ENCRYPT >/dev/null 2>&1
4543 if [ $? -eq 0 ]; then
4552 /^Content-Description: /{ skip = 2; print; next }
4553 /^$/{ if(skip) --skip }
4556 < ./.DECRYPT > "${MBOX}"
4557 check behave:s/mime:decrypt+verify:checksum - "${MBOX}" '1720739247 931'
4559 printf 'behave:s/mime:decrypt+verify:disproof-1: '
4560 if (openssl smime -decrypt -inkey ./.tkey.pem -in ./.ENCRYPT |
4561 openssl smime -verify -CAfile ./.tcert.pem) >/dev/null 2>&1; then
4568 printf "behave
:s
/mime
:encrypt
: "
4569 echo bla | ${MAILX} ${ARGS} \
4570 -Ssmime-force-encryption \
4571 -Ssmime-encrypt-recei@ver.com=./.tpair.pem \
4572 -Smta=./.tsendmail.sh \
4573 -Ssmime-ca-file=./.tcert.pem -Ssmime-sign-cert=./.tpair.pem \
4574 -Sfrom=test@localhost \
4575 -s 'S/MIME test' recei@ver.com
4576 if [ $? -eq 0 ]; then
4583 # Same as behave:s/mime:encrypt+sign:checksum above
4584 ${sed} -e '/^$/,$d' < ./.ENCRYPT > "${MBOX}"
4585 check behave:s/mime:encrypt:checksum - "${MBOX}" '1937410597 327'
4588 printf 'decrypt ./.DECRYPT\nx\n' | ${MAILX} ${ARGS} \
4589 -Ssmime-force-encryption \
4590 -Ssmime-encrypt-recei@ver.com=./.tpair.pem \
4591 -Smta=./.tsendmail.sh \
4592 -Ssmime-ca-file=./.tcert.pem -Ssmime-sign-cert=./.tpair.pem \
4593 -Sfrom=test@localhost \
4595 -f ./.ENCRYPT >/dev/null 2>&1
4596 check behave:s/mime:decrypt 0 ".
/.DECRYPT
" '2624716890 422'
4598 printf 'behave:s/mime:decrypt:disproof-1: '
4599 if openssl smime -decrypt -inkey ./.tkey.pem \
4600 -in ./.ENCRYPT >/dev/null 2>&1; then
4611 # Some basic tests regarding correct sending of mails, via STDIN / -t / -q,
4612 # including basic MIME Content-Transfer-Encoding correctness (quoted-printable)
4613 # Note we unfortunately need to place some statements without proper
4614 # indentation because of continuation problems
4615 # xxx Note: t_content() was the first test (series) written. Today many
4616 # xxx aspects are (better) covered by other tests above, some are not.
4617 # xxx At some future date and time, convert the last remains not covered
4618 # xxx elsewhere to a real t_behave_* test and drop t_content()
4622 # Test for [260e19d] (Juergen Daubert)
4624 echo body | ${MAILX} ${ARGS} "${MBOX}"
4625 check content
:004 0 "${MBOX}" '2917662811 98'
4627 # "Test for" [d6f316a] (Gavin Troy)
4629 printf "m ${MBOX}\n~s subject1\nEmail body\n~.\nfi ${MBOX}\np\nx\n" |
4630 ${MAILX} ${ARGS} ${ADDARG_UNI} -Spipe-text/plain="@* ${cat}" > "${BODY}"
4631 check content:006 0 "${MBOX}" '2099098650 122'
4632 check content:006-1 - "${BODY}" '794542938 174'
4634 # "Test
for" [c299c45] (Peter Hofmann) TODO shouldn't end up QP-encoded?
4637 for(i = 0; i < 10000; ++i)
4639 #printf "\xF0\x90\x87\x90"
4640 }' | ${MAILX} ${ARGS} ${ADDARG_UNI} -s TestSubject "${MBOX}"
4641 check content
:007 0 "${MBOX}" '534262374 61816'
4647 # MIME encoding (QP) stress message subject
4648 printf 'Äbrä Kä?dä=brö Fü?di=bus? '\
4649 'adadaddsssssssddddddddddddddddddddd'\
4650 'ddddddddddddddddddddddddddddddddddd'\
4651 'ddddddddddddddddddddddddddddddddddd'\
4652 'dddddddddddddddddddd Hallelulja? Od'\
4653 'er?? eeeeeeeeeeeeeeeeeeeeeeeeeeeeee'\
4654 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'\
4655 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee f'\
4656 'fffffffffffffffffffffffffffffffffff'\
4657 'fffffffffffffffffffff ggggggggggggg'\
4658 'ggggggggggggggggggggggggggggggggggg'\
4659 'ggggggggggggggggggggggggggggggggggg'\
4660 'ggggggggggggggggggggggggggggggggggg'\
4665 # MIME encoding (QP) stress message body
4667 'Ich bin eine DÖS-Datäi mit sehr langen Zeilen und auch '\
4668 'sonst bin ich ganz schön am Schleudern, da kannste denke '\
4669 "wasde willst, gelle, gelle, gelle, gelle, gelle.\r\n"\
4670 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst \r\n"\
4671 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 1\r\n"\
4672 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 12\r\n"\
4673 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 123\r\n"\
4674 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 1234\r\n"\
4675 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 12345\r\n"\
4676 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 123456\r\n"\
4677 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 1234567\r\n"\
4678 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 12345678\r\n"\
4679 "Ich bin eine DÖS-Datäi mit langen Zeilen und auch sonst 123456789\r\n"\
4680 "Unn ausserdem habe ich trailing SP/HT/SP/HT whitespace \r\n"\
4681 "Unn ausserdem habe ich trailing HT/SP/HT/SP whitespace \r\n"\
4682 "auf den zeilen vorher.\r\n"\
4683 "From am Zeilenbeginn und From der Mitte gibt es auch.\r\n"\
4685 "Die letzte Zeile war nur ein Punkt.\r\n"\
4687 "Das waren deren zwei.\r\n"\
4689 "Die letzte Zeile war ein Leerschritt.\n"\
4690 "=VIER = EQUAL SIGNS=ON A LINE=\r\n"\
4693 "Die letzte Zeile war nur ein Punkt, mit Unix Zeilenende.\n"\
4695 "Das waren deren zwei. ditto.\n"\
4697 "Unn ausseerdem habe ich trailing SP/HT/SP/HT whitespace \n"\
4698 "Unn ausseerdem habe ich trailing HT/SP/HT/SP whitespace \n"\
4699 "auf den zeilen vorher.\n"\
4701 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.\n"\
4702 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.1"\
4704 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.12"\
4706 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.12"\
4708 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.12"\
4710 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.12"\
4712 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende.12"\
4714 "QP am Zeilenende über soft-nl hinweg\n"\
4715 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende."\
4717 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende."\
4719 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende."\
4721 "Ich bin eine ziemlich lange, steile, scharfe Zeile mit Unix Zeilenende."\
4723 "=VIER = EQUAL SIGNS=ON A LINE=\n"\
4725 "Die letzte Zeile war ein Leerschritt.\n"\
4730 # if have_feat devel; then
4731 # ARGS="${ARGS} -Smemdebug"
4735 if [ -n "${UTF8_LOCALE}" ]; then
4736 printf 'Using Unicode locale %s\n' "${UTF8_LOCALE}"
4738 printf 'No Unicode locale found, disabling Unicode tests\n'
4745 if [ -z "${CHECK_ONLY}${MAE_TEST}" ]; then
4747 elif [ -z "${MAE_TEST}" ] ||
[ ${#} -eq 0 ]; then
4750 while [ ${#} -gt 0 ]; do
4756 [ ${ESTAT} -eq 0 ] && echo Ok ||
echo >&2 'Errors occurred'