X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/012d05c2b62332eb400d66b806e48216d39358c6..1903d5af62f05f3b6f69a4950734154a1a698dc8:/test/mhfixmsg/test-mhfixmsg diff --git a/test/mhfixmsg/test-mhfixmsg b/test/mhfixmsg/test-mhfixmsg index 61821c27..efe7de7e 100755 --- a/test/mhfixmsg/test-mhfixmsg +++ b/test/mhfixmsg/test-mhfixmsg @@ -49,7 +49,7 @@ fi cat >"$expected" <`mhpath new` <998 characters) text cat >$expected <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 text -printf "%s\x0d\xbd\xb2=\xbc%s" "To: recipient@example.com +# 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 @@ -844,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 @@ -883,7 +907,34 @@ 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 message is not modified when -fixboundary fails +cat >`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" @@ -1271,24 +1322,24 @@ 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 @@ -1579,6 +1630,50 @@ run_prog mhfixmsg last -outfile "$actual" -nocrlflinebreaks -noreformat check "$expected" "$actual" +# check that input is passed through to output when there's a parse error +# (the charset string is missing its closing quote) with -outfile +cat >"$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"