X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/0d3875d020fb17d34918f5e81ee7f87fbc5d1565..1903d5af62f05f3b6f69a4950734154a1a698dc8:/test/mhfixmsg/test-mhfixmsg?ds=inline diff --git a/test/mhfixmsg/test-mhfixmsg b/test/mhfixmsg/test-mhfixmsg index dea2ddc5..efe7de7e 100755 --- a/test/mhfixmsg/test-mhfixmsg +++ b/test/mhfixmsg/test-mhfixmsg @@ -12,10 +12,12 @@ if test -z "${MH_OBJ_DIR}"; then MH_OBJ_DIR=`cd $srcdir && pwd`; export MH_OBJ_DIR fi -. "${srcdir}/test/post/test-post-common.sh" +. "${MH_OBJ_DIR}/test/common.sh" + +setup_test #### Make sure that html-to-text conversion is what we expect. -require_locale en_US.utf8 +require_locale en_US.utf-8 en_US.utf8 LC_ALL=en_US.UTF-8; export LC_ALL expected="$MH_TEST_DIR/test-mhfixmsg$$.expected" @@ -23,10 +25,12 @@ expected_err="$MH_TEST_DIR/test-mhfixmsg$$.expected_err" actual="$MH_TEST_DIR/test-mhfixmsg$$.actual" actual_err="$MH_TEST_DIR/test-mhfixmsg$$.actual_err" -if grep mhfixmsg-format-text/html "${MH_TEST_DIR}/Mail/mhn.defaults" \ +mhn_defaults="$MH_INST_DIR${nmhetcdir}/mhn.defaults" + +if grep mhfixmsg-format-text/html "${mhn_defaults}" \ >/dev/null; then can_reformat_texthtml=1 - if grep 'mhfixmsg-format-text/html.*w3m' "${MH_TEST_DIR}/Mail/mhn.defaults" \ + if grep 'mhfixmsg-format-text/html.*w3m' "${mhn_defaults}" \ >/dev/null; then #### w3m uses $HOME/.w3m/, and creates it if it doesn't exist. To #### support testing with non-writeable $HOME, and to not leave @@ -42,21 +46,24 @@ fi # check -help -# Verified behavior consistent with compiled sendmail. cat >"$expected" <&2 @@ -414,11 +420,11 @@ else fi -# check -decode (enabled by default) +# check -decodetext (enabled by default) cat >"$expected" <`mhpath new` <$expected <`mhpath new` <998 characters) text +cat >$expected <`mhpath new` <998 characters) text +cat >$expected <long lineThis line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. This line is greater than 998 characters in length, so this part should not be decoded. + +------- =_aaaaaaaaaa0-- +EOF + +run_prog mhfixmsg -noreformat -decodetext binary last +check `mhpath last` "$expected" + + +# check -decodetext of binary (containing ASCII NUL) text +printf "%s\xbd\xb2=\xbc\x00%s" "To: recipient@example.com From: sender@example.com Subject: mhfixmsg binary decode test MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=\"----- =_aaaaaaaaaa0\" ------- =_aaaaaaaaaa0 -Content-Type: text/plain; charset=\"iso-8859-1\"; name=\"nul+square.txt\" +Content-Type: text/plain; charset=UTF-8; name=\"nul+square.txt\" Content-Transfer-Encoding: binary " " ------- =_aaaaaaaaaa0-- " >"$expected" -## output_content() in mhoutsbr.c can't handle binary content. -## mhfixmsg last -decodetext binary -outfile "$actual" -## check "$expected" "$actual" -rm -f "$expected" -rmm last +mhfixmsg last -decodetext binary -outfile "$actual" +check "$expected" "$actual" # check that -reformat succeeds when decode of binary text fails @@ -750,7 +868,7 @@ EOF cp -p `mhpath last` `mhpath new` run_test 'mhfixmsg last -nofixboundary' '' -check "$MH_TEST_DIR"/Mail/inbox/17 "$MH_TEST_DIR"/Mail/inbox/18 'keep first' +check "$MH_TEST_DIR"/Mail/inbox/18 "$MH_TEST_DIR"/Mail/inbox/19 'keep first' # check that message is not output when fed through stdin @@ -789,28 +907,47 @@ The boundaries of this part don't match the header boundary. EOF run_test 'mhfixmsg last -outfile '"$actual"' -verbose' \ - "mhfixmsg: 17, fix multipart boundary" + "mhfixmsg: 18, fix multipart boundary" check "$expected" "$actual" -# check that text/plain part is added to lone text/html in multipart/related -prepare_space >"$expected" <`mhpath new` < +To: +Subject: mhfixmsg bad boundary test + +This is a multi-part message in MIME format. + +------=_ NextPart_000_1781A1A_01CC1147.81EBA8D4 +Content-Type: text/plain + +The boundary below doesn't match the header boundary. + +------=_ +NextPart_000_1781A1A_01CC1147.81EBA8D4-- +EOF + +cp -p `mhpath last` "$expected" +run_test "mhfixmsg last -outfile $actual" '' +check "$expected" "$actual" + + +# check that text/plain part is not added to text/html in multipart/related +# when it shouldn't be +cat >`mhpath new` < -------=_nmh-multipart1-- - ------=_Part_90310_101292502.1 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit @@ -834,12 +969,30 @@ Your email client does not support HTML messages ------=_Part_90310_101292502.1-- EOF -cat >`mhpath new` <"$actual" + check "$expected" "$actual" 'ignore space' +else + rm -f "$expected" +fi + + +# check that text/plain part is added to text/html in multipart/related +# when it should be +cat >"$expected" < + +------=_Part_90310_101292502.1-- +EOF + +cat >`mhpath new` < + + HTML Content + + + This is the real content. + + + ------=_Part_90310_101292502.1-- EOF @@ -933,7 +1105,7 @@ run_test 'mhfixmsg last -outfile '"$actual" '' check "$expected" "$actual" -# check stripping of CRs from ASCII text context +# check not stripping of CRs from ASCII text context (default) cat >"$expected" <`mhpath new` <<'EOF' @@ -960,6 +1132,33 @@ run_prog mhfixmsg last -outfile "$actual" check "$expected" "$actual" +# check stripping of CRs from ASCII text context +cat >"$expected" <`mhpath new` <<'EOF' +MIME-Version: 1.0 +From: sender@example.com +To: recipient@example.com +Subject: message with CR's +Date: Mon, 29 Apr 2013 11:51:45 -0400 + +There were two CR-LF pairs at the end of this sentence. + +EOF + +run_prog mhfixmsg last -outfile "$actual" -nocrlflinebreaks +check "$expected" "$actual" + + # check -replacetextplain prepare_space >"$expected" <"$expected" <`mhpath new` <"$MH_TEST_DIR/Mail/rmmproc" <<'EOF' mv "$1" "$1.backup" EOF chmod a+x "${MH_TEST_DIR}/Mail/rmmproc" echo "rmmproc: ${MH_TEST_DIR}/Mail/rmmproc" >>"$MH" -cp "${MH_TEST_DIR}/Mail/inbox/15" "${MH_TEST_DIR}/Mail/inbox/15.original" +cp "${MH_TEST_DIR}/Mail/inbox/16" "${MH_TEST_DIR}/Mail/inbox/16.original" -run_test 'mhfixmsg 15' '' -check "${MH_TEST_DIR}/Mail/inbox/15.backup" \ - "${MH_TEST_DIR}/Mail/inbox/15.original" +run_test 'mhfixmsg 16' '' +check "${MH_TEST_DIR}/Mail/inbox/16.backup" \ + "${MH_TEST_DIR}/Mail/inbox/16.original" # check -normmproc -cp "${MH_TEST_DIR}/Mail/inbox/19" "${MH_TEST_DIR}/Mail/inbox/20" +cp "${MH_TEST_DIR}/Mail/inbox/21" "${MH_TEST_DIR}/Mail/inbox/22" -run_test 'mhfixmsg 19 -normmproc' -check "${MH_TEST_DIR}/Mail/inbox/20" \ - "${MH_TEST_DIR}/Mail/inbox/,19" 'keep first' +run_test 'mhfixmsg 21 -normmproc' +check "${MH_TEST_DIR}/Mail/inbox/22" \ + "${MH_TEST_DIR}/Mail/inbox/,21" 'keep first' # check -rmmproc -run_test 'mhfixmsg 20 -rmmproc true' -if test -f '${MH_TEST_DIR}/Mail/inbox/20.backup'; then +run_test 'mhfixmsg 21 -rmmproc true' +if test -f '${MH_TEST_DIR}/Mail/inbox/22.backup'; then echo check of mhfixmsg -rmmproc FAILED, should not have created backup file failed=`expr ${failed:-0} + 1` fi +# check -fixtype +cat >"$expected" <`mhpath new` <$expected < + + This was the text/html part. + + + + +------- =_aaaaaaaaaa0-- +EOF + +cat >`mhpath new` <$expected <`mhpath new` <$expected <`mhpath new` <$expected <`mhpath new` <"$expected.err" <`mhpath new` <"$actual.err" +set -e +#### Expected output is identical to the input message. +check `mhpath last` "$actual" 'keep first' +check "$expected.err" "$actual.err" + + +# check that input is passed through to output when there's a parse error +# (the charset string is missing its closing quote) with -outfile, and +# input from stdin. Don't check err output, because it contains the name +# of a tmp file. It's similar to that of the previous check. +set +e +run_prog mhfixmsg -file - -outfile - <`mhpath last` >"$actual" 2>/dev/null +set -e +#### Expected output is identical to the input message. +check `mhpath last` "$actual" + + # make sure there are no tmp files left over find "$MH_TEST_DIR/Mail" \( -name 'mhfix*' -o -name ',mhfix*' \) -print \ >"$actual"