X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/1903d5af62f05f3b6f69a4950734154a1a698dc8..a1e07630c435cd9fb50aea6563e5835efdc13e03:/test/mhfixmsg/test-mhfixmsg?ds=sidebyside diff --git a/test/mhfixmsg/test-mhfixmsg b/test/mhfixmsg/test-mhfixmsg index efe7de7e..f741d9c6 100755 --- a/test/mhfixmsg/test-mhfixmsg +++ b/test/mhfixmsg/test-mhfixmsg @@ -16,9 +16,10 @@ fi setup_test +check_exit '-eq 1' mhfixmsg - + #### Make sure that html-to-text conversion is what we expect. -require_locale en_US.utf-8 en_US.utf8 -LC_ALL=en_US.UTF-8; export LC_ALL +require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 expected="$MH_TEST_DIR/test-mhfixmsg$$.expected" expected_err="$MH_TEST_DIR/test-mhfixmsg$$.expected_err" @@ -27,8 +28,7 @@ actual_err="$MH_TEST_DIR/test-mhfixmsg$$.actual_err" mhn_defaults="$MH_INST_DIR${nmhetcdir}/mhn.defaults" -if grep mhfixmsg-format-text/html "${mhn_defaults}" \ - >/dev/null; then +if grep mhfixmsg-format-text/html "${mhn_defaults}" >/dev/null; then can_reformat_texthtml=1 if grep 'mhfixmsg-format-text/html.*w3m' "${mhn_defaults}" \ >/dev/null; then @@ -46,6 +46,7 @@ fi # check -help +start_test "-help" cat >"$expected" <"$actual" 2>&1 +#### Skip nmh intro text. +run_prog mhfixmsg -help | sed '/^$/,$d' >"$actual" 2>&1 check "$expected" "$actual" # check -version +start_test "-version" case `mhfixmsg -version` in mhfixmsg\ --*) ;; *) printf '%s: mhfixmsg -version generated unexpected output\n' "$0" >&2 @@ -83,13 +86,15 @@ esac # check that non-MIME messages aren't modified # check -outfile +start_test "non-MIME messages aren't modified, and -outfile" run_test 'mhfixmsg first -outfile '"$actual" '' check "`mhpath first`" "$actual" 'keep first' # check that non-MIME messages with no bodies aren't modified # check -outfile -cat >`mhpath new` <"`mhpath new`" < To: Some User Date: Fri, 29 Sep 2006 00:00:00 @@ -102,7 +107,8 @@ check "`mhpath last`" "$actual" # check -nofixcte -cat >"$MH_TEST_DIR"/Mail/inbox/11 <"`mhpath new`" <"$expected" </dev/null run_test 'mhfixmsg' '' @@ -183,6 +191,7 @@ check "$MH_TEST_DIR"/Mail/inbox/,11 "$MH_TEST_DIR"/Mail/inbox/11.original # check backup with -file +start_test "backup with -file" cp "$MH_TEST_DIR"/Mail/inbox/11 "$MH_TEST_DIR"/Mail/inbox/11.original folder last >/dev/null run_test 'mhfixmsg -file '"$MH_TEST_DIR"/Mail/inbox/11 '' @@ -190,9 +199,15 @@ check "$MH_TEST_DIR"/Mail/inbox/11 "$expected" 'keep first' check "$MH_TEST_DIR"/Mail/inbox/,11 "$MH_TEST_DIR"/Mail/inbox/11.original +# check -file with directory +start_test "-file with directory" +run_test 'mhfixmsg -file /tmp' 'mhfixmsg: /tmp is a directory +mhfixmsg: unable to parse message from file /tmp' + + # check -reformat (enabled by default): addition of text/plain part # to solitary text/html part -# +start_test "-reformat (enabled by default): addition of text/plain part" prepare_space >"$expected" < @@ -226,7 +241,7 @@ Content-Transfer-Encoding: 8bit ------=_nmh-multipart-- EOF -cat >"$MH_TEST_DIR"/Mail/inbox/12 <"`mhpath new`" <"$expected" < @@ -307,7 +323,7 @@ Content-Transfer-Encoding: 8bit ------=_nmh-multipart-3-- EOF -cat >"$MH_TEST_DIR"/Mail/inbox/12 <"`mhpath last`" <"$expected" <"$expected" <`mhpath new` <"`mhpath new`" <$expected <`mhpath new` <"`mhpath new`" <`mhpath new` <"`mhpath new`" <998 characters) text +start_test "for successful decode of a different part with attempted -decodetext" cat >$expected <`mhpath new` <"`mhpath new`" <998 characters) text +start_test "for successful decode of a different part with -decodetext of binary" cat >$expected <"$expected" <<'EOF' MIME-Version: 1.0 Date: Thu, 11 Apr 2013 02:47:08 -0700 @@ -732,7 +758,7 @@ Content-Type: multipart/alternative; boundary="----=_nmh-multipart" ------=_nmh-multipart Content-Type: text/plain; charset="ISO-8859-1" -Content-Transfer-Encoding: 8bit +Content-Transfer-Encoding: 7bit Mile $0.00 Time $78.71 @@ -747,7 +773,7 @@ Content-Transfer-Encoding: quoted-printable EOF -cat >`mhpath new` <<'EOF' +cat >"`mhpath new`" <<'EOF' MIME-Version: 1.0 Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: quoted-printable @@ -796,12 +822,14 @@ fi # check -textcharset # Also checks preservation of attributes after one (charset) that is # modified. +start_test "-textcharset" cat >"$expected" <`mhpath new` <"`mhpath new`" <"$expected" <`mhpath new` <"`mhpath new`" <"$actual" 2>"$actual.err" check "$expected" "$actual" if grep "mhfixmsg: $MH_TEST_DIR/Mail/.*, fix multipart boundary" \ @@ -886,6 +916,7 @@ fi # check fixup of erroneous boundary in multipart (-fixboundary, # enabled by default) # check -verbose +start_test "fixup of erroneous boundary in multipart (-fixboundary, enabled by default)" cat >"$expected" <`mhpath new` <"`mhpath new`" <`mhpath new` <"`mhpath new`" <"$expected" <`mhpath new` <"`mhpath new`" <"$expected" < To: Some User @@ -1072,14 +1108,14 @@ This is an RFC-822 message. and some garbage at the end EOF -cat >`mhpath new` <"`mhpath new`" < To: Some User Date: Fri, 29 Sep 2006 00:00:00 Message-Id: @test.nmh Subject: message with message/rfc822 attachment MIME-Version: 1.0 -Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaa0" +Content-Type: multipart/mixed; boundary="----- =badboundary" and some garbage before the attachment @@ -1106,6 +1142,7 @@ check "$expected" "$actual" # check not stripping of CRs from ASCII text context (default) +start_test "not stripping of CRs from ASCII text context (default)" cat >"$expected" <`mhpath new` <<'EOF' +cat >"`mhpath new`" <<'EOF' MIME-Version: 1.0 From: sender@example.com To: recipient@example.com @@ -1133,6 +1170,7 @@ check "$expected" "$actual" # check stripping of CRs from ASCII text context +start_test "stripping of CRs from ASCII text context" cat >"$expected" <`mhpath new` <<'EOF' +cat >"`mhpath new`" <<'EOF' MIME-Version: 1.0 From: sender@example.com To: recipient@example.com @@ -1160,6 +1198,7 @@ check "$expected" "$actual" # check -replacetextplain +start_test "-replacetextplain" prepare_space >"$expected" < @@ -1189,7 +1227,7 @@ Content-Disposition: inline ------=_Part_876302-- EOF -cat >`mhpath new` <<'EOF' +cat >"`mhpath new`" <<'EOF' To: recipient@example.com From: sender@example.com Subject: mhfixmsg replacement of bad text/plain part test @@ -1205,7 +1243,6 @@ Content-Disposition: inline ------=_Part_876302 Content-Type: text/html; charset="UTF-8" -Content-Transfer-Encoding: 8bit Content-Disposition: inline @@ -1230,6 +1267,7 @@ fi # check -noreplacetextplain +start_test "-noreplacetextplain" cat >"$expected" < @@ -1265,6 +1302,7 @@ check "$expected" "$actual" # check removal of extraneous trailing semicolon from header parameter list +start_test "removal of extraneous trailing semicolon from header parameter list" cat >"$expected" <`mhpath new` <"`mhpath new`" <"$MH_TEST_DIR/Mail/rmmproc" <<'EOF' +if [ $can_reformat_texthtml -eq 1 ]; then + # check rmmproc + start_test "rmmproc" + cat >"$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/16" "${MH_TEST_DIR}/Mail/inbox/16.original" + chmod a+x "${MH_TEST_DIR}/Mail/rmmproc" + echo "rmmproc: ${MH_TEST_DIR}/Mail/rmmproc" >>"$MH" + cp "${MH_TEST_DIR}/Mail/inbox/16" "${MH_TEST_DIR}/Mail/inbox/16.original" -run_test 'mhfixmsg 16' '' -check "${MH_TEST_DIR}/Mail/inbox/16.backup" \ - "${MH_TEST_DIR}/Mail/inbox/16.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/21" "${MH_TEST_DIR}/Mail/inbox/22" + # check -normmproc + start_test "-normmproc" + cp "${MH_TEST_DIR}/Mail/inbox/21" "${MH_TEST_DIR}/Mail/inbox/22" -run_test 'mhfixmsg 21 -normmproc' -check "${MH_TEST_DIR}/Mail/inbox/22" \ - "${MH_TEST_DIR}/Mail/inbox/,21" 'keep first' + run_test 'mhfixmsg 21 -normmproc' + check "${MH_TEST_DIR}/Mail/inbox/22" \ + "${MH_TEST_DIR}/Mail/inbox/,21" 'keep first' +fi # check -rmmproc +start_test "-rmmproc" 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 @@ -1346,6 +1389,7 @@ fi # check -fixtype +start_test "-fixtype" cat >"$expected" <`mhpath new` <"`mhpath new`" <$expected < @@ -1411,7 +1456,7 @@ Content-Transfer-Encoding: 8bit ------- =_aaaaaaaaaa0-- EOF -cat >`mhpath new` <"`mhpath new`" <$expected <`mhpath new` <"`mhpath new`" <$expected <`mhpath new` <"`mhpath new`" <$expected <`mhpath new` <"`mhpath new`" <"$expected.err" <`mhpath new` <"`mhpath new`" <"$actual.err" set -e #### Expected output is identical to the input message. -check `mhpath last` "$actual" 'keep first' +check "`mhpath last`" "$actual" 'keep first' check "$expected.err" "$actual.err" @@ -1667,11 +1716,77 @@ check "$expected.err" "$actual.err" # (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. +start_test "input is passed through to output when there's a parse error" 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" +check "`mhpath last`" "$actual" 'keep first' + + +start_test "pass through message with relative folder path with parse error" +#### Factor out leading portion of current folder path and make it relative. +pwd=`pwd` +set +e +run_prog mhfixmsg +./`mhpath | sed "s%^$pwd/%%"` last -out - >"$actual" 2>/dev/null +set -e +folder -f +inbox >/dev/null +#### Expected output is identical to the input message. +check "`mhpath last`" "$actual" + + +start_test "fix RFC 2047 encoded header parameters" +#### Also, add C-T-E:8bit to the message headers. +cat >"$expected" <"`mhpath new`" <"$actual" 2>/dev/null +check "$expected" "$actual" # make sure there are no tmp files left over @@ -1682,5 +1797,5 @@ EOF check "$expected" "$actual" - +finish_test exit $failed