]> diplodocus.org Git - nmh/blobdiff - test/mhfixmsg/test-mhfixmsg
More probing: print out sbr/dtimep.c.
[nmh] / test / mhfixmsg / test-mhfixmsg
index 709a4062f2da28d17e3cc8a859242e3cb6a5100d..ac013234f077710072a772e30e3cb383f20112c9 100755 (executable)
@@ -25,7 +25,7 @@ if grep mhfixmsg-format-text/html "${MH_TEST_DIR}/Mail/mhn.defaults" \
   >/dev/null; then
   can_reformat_texthtml=1
 else
-  echo "$0: skipping -reformat check because
+  echo "$0: skipping -reformat check because \
     mhfixmsg-format-text/html is not available"
   can_reformat_texthtml=0
 fi
@@ -41,6 +41,7 @@ Usage: mhfixmsg [+folder] [msgs] [switches]
   -nodecodetext
   -[no]textcodeset
   -[no]reformat
+  -[no]replacetextplain
   -[no]fixboundary
   -[no]fixcte
   -file file
@@ -243,6 +244,8 @@ mhfixmsg: 12 part 1, decode text/html; charset=\"Windows-1252\"" \
   mhfixmsg last -outfile - -verbose 2>"$actual.err" | uniq >"$actual"
   check "$expected" "$actual"
   check "$expected.err" "$actual.err"
+else
+  rm -f "$expected"
 fi
 
 
@@ -318,6 +321,8 @@ mhfixmsg: 12 part 1, decode text/html; charset=\"Windows-1252\"" \
   mhfixmsg last -outfile - -verbose 2>"$actual.err" | uniq >"$actual"
   check "$expected" "$actual"
   check "$expected.err" "$actual.err"
+else
+  rm -f "$expected"
 fi
 
 
@@ -388,6 +393,8 @@ if [ $can_reformat_texthtml -eq 1 ]; then
   mhfixmsg last -nodecode -outfile - -verbose 2>"$actual.err" | uniq >"$actual"
   check "$expected" "$actual"
   check "$expected.err" "$actual.err"
+else
+  rm -f "$expected"
 fi
 
 
@@ -409,8 +416,7 @@ This is a text/plain part.
 ------- =_aaaaaaaaaa0--
 EOF
 
-msgfile=`mhpath new`
-cat >$msgfile <<EOF
+cat >`mhpath new` <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test
@@ -482,8 +488,7 @@ This is the fourth text/plain part.
 This is additional content after the last subpart of the multipart.
 EOF
 
-msgfile=`mhpath new`
-cat >$msgfile <<EOF
+cat >`mhpath new` <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 2
@@ -539,8 +544,7 @@ check "$expected" "$actual"
 # check attempted -decode of binary text
 #### Generated the encoded text below with:
 ####   $ printf '\x0d\xbd\xb2=\xbc\n' | base64
-msgfile=`mhpath new`
-cat >$msgfile <<EOF
+cat >`mhpath new` <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg attempted binary decode test
@@ -557,7 +561,9 @@ Db2yPbwK
 EOF
 
 cp -p `mhpath last` "$expected"
+set +e
 mhfixmsg last
+set -e
 check `mhpath last` "$expected" 'keep first'
 
 
@@ -583,6 +589,78 @@ rm -f "$expected"
 rmm last
 
 
+# check that -reformat succeeds when decode of binary text fails
+cat >"$expected" <<'EOF'
+MIME-Version: 1.0
+Date: Thu, 11 Apr 2013 02:47:08 -0700
+To: <me@example.com>
+From: <sender@example.com>
+Subject: body requires binary encoding
+Content-Type: multipart/alternative; boundary="----=_nmh-multipart"
+
+------=_nmh-multipart
+Content-Type: text/plain; charset="ISO-8859-1"
+Content-Transfer-Encoding: 8bit
+
+Mile                                     $0.00
+Time                                    $78.71
+State Tax                                $5.90
+Vehicle License Fee                      $1.84
+State Txn Tax                            $6.00
+
+------=_nmh-multipart
+Content-Type: text/html; charset="ISO-8859-1"
+Content-Transfer-Encoding: quoted-printable
+
+<body>
+EOF
+
+cat >`mhpath new` <<'EOF'
+MIME-Version: 1.0
+Content-Type: text/html; charset="ISO-8859-1"
+Content-Transfer-Encoding: quoted-printable
+Date: Thu, 11 Apr 2013 02:47:08 -0700
+To: <me@example.com>
+From: <sender@example.com>
+Subject: body requires binary encoding
+
+<body>
+<table width=3D"325" border=3D"0" cellspacing=3D"0" cellpadding=3D"0">
+<tr><td><font face=3D"Arial, Helvetica, sans-serif" color=3D"#333333" size=
+=3D"2"><strong>Mile</strong></font></td><td height=3D"3">&nbsp;</td><td ali=
+gn=3D"right"><font face=3D"Arial, Helvetica, sans-serif" color=3D"#333333" =
+size=3D"2">$0.00</font></td></tr><tr><td><font face=3D"Arial, Helvetica, sa=
+ns-serif" color=3D"#333333" size=3D"2"><strong>Time</strong></font></td><td=
+ height=3D"3">&nbsp;</td><td align=3D"right"><font face=3D"Arial, Helvetica=
+, sans-serif" color=3D"#333333" size=3D"2">$78.71</font></td></tr><tr><td><=
+font face=3D"Arial, Helvetica, sans-serif" color=3D"#333333" size=3D"2"><st=
+rong>State Tax</strong></font></td><td height=3D"3">&nbsp;</td><td align=3D=
+"right"><font face=3D"Arial, Helvetica, sans-serif" color=3D"#333333" size=
+=3D"2">$5.90</font></td></tr><tr><td><font face=3D"Arial, Helvetica, sans-s=
+erif" color=3D"#333333" size=3D"2"><strong>Vehicle License Fee</strong></fo=
+nt></td><td height=3D"3">&nbsp;</td><td align=3D"right"><font face=3D"Arial=
+, Helvetica, sans-serif" color=3D"#333333" size=3D"2">$1.84</font></td></tr=
+><tr><td><font face=3D"Arial, Helvetica, sans-serif" color=3D"#333333" size=
+=3D"2"><strong>State Txn Tax</strong></font></td><td height=3D"3">&nbsp;</t=
+d><td align=3D"right"><font face=3D"Arial, Helvetica, sans-serif" color=3D"=
+#333333" size=3D"2">$6.00</font></td></tr>
+
+</body>
+</html>
+EOF
+
+if [ $can_reformat_texthtml -eq 1 ]; then
+  #### lynx inserts multiple blank lines, so use uniq to squeeze them.
+  #### Truncate to avoid comparing the html portion because it can
+  #### get reformatted.
+  mhfixmsg last -outfile - | uniq | head -22 >"$actual"
+  check "$expected" "$actual" 'ignore space'
+else
+  cp -p "$MH_TEST_DIR/Mail/inbox/15" "$MH_TEST_DIR/Mail/inbox/15.backup"
+  rm -f "$expected"
+fi
+
+
 # check -textcodeset
 # Also checks preservation of attributes after one (charset) that is
 # modified.
@@ -605,8 +683,7 @@ EOF
 
 #### Generated the encoded text below with:
 ####   $ printf '\xbd\xb2=\xbc\n' | base64
-msgfile=`mhpath new`
-cat >$msgfile <<EOF
+cat >`mhpath new` <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg textcodeset test
@@ -627,14 +704,13 @@ set +e
 mhfixmsg last -textcodeset utf-8 -outfile "$actual" 2>"$actual.err"
 if grep "mhfixmsg: Can't convert .* to .* without iconv" "$actual.err" \
   >/dev/null; then
-  echo skipping -textcodeset check because nmh was built without iconv
-  set +e
+  echo "$0: skipping -textcodeset check because nmh was built without iconv"
   rm -f "$expected" "$actual" "$actual.err"
 else
-  set +e
   check "$expected" "$actual"
   rm "$actual.err"
 fi
+set -e
 
 
 # check -nofixboundary
@@ -664,7 +740,7 @@ EOF
 cp -p `mhpath last` `mhpath new`
 
 run_test 'mhfixmsg last -nofixboundary' ''
-check "$MH_TEST_DIR"/Mail/inbox/16 "$MH_TEST_DIR"/Mail/inbox/17 'keep first'
+check "$MH_TEST_DIR"/Mail/inbox/17 "$MH_TEST_DIR"/Mail/inbox/18 'keep first'
 
 
 # check that message is not output when fed through stdin
@@ -703,7 +779,7 @@ The boundaries of this part don't match the header boundary.
 EOF
 
 run_test 'mhfixmsg last -outfile '"$actual"' -verbose' \
-         "mhfixmsg: 16, fix multipart boundary"
+         "mhfixmsg: 17, fix multipart boundary"
 check "$expected" "$actual"
 
 
@@ -783,6 +859,7 @@ else
   rm -f "$expected"
 fi
 
+
 # check handling of rfc822 message type
 cat >"$expected" <<EOF
 From: Test <test@example.com>
@@ -846,30 +923,161 @@ run_test 'mhfixmsg last -outfile '"$actual" ''
 check "$expected" "$actual"
 
 
+# check stripping of CRs from ASCII text context
+cat >"$expected" <<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 are two CR-LF pairs at the end of this sentence.
+
+EOF
+
+cat >`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 are two CR-LF pairs at the end of this sentence.\r
+\r
+EOF
+
+mhfixmsg last -outfile "$actual"
+check "$expected" "$actual"
+
+
+# check -replacetextplain
+cat >"$expected" <<EOF
+To: recipient@example.com
+From: sender@example.com
+Subject: mhfixmsg replacement of bad text/plain part test
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="----=_Part_876302"
+
+------=_Part_876302
+Content-Type: text/plain; charset="UTF-8"
+Content-Transfer-Encoding: 8bit
+
+Yes, the text/plain part really was empty.
+
+------=_Part_876302
+Content-Type: text/html; charset="UTF-8"
+Content-Transfer-Encoding: 8bit
+Content-Disposition: inline
+
+<html><head>
+<title>eticket</title>
+</head>
+<body>
+  Yes, the text/plain part really was empty.
+</body>
+</html>
+
+------=_Part_876302--
+EOF
+
+cat >`mhpath new` <<'EOF'
+To: recipient@example.com
+From: sender@example.com
+Subject: mhfixmsg replacement of bad text/plain part test
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="----=_Part_876302"
+
+------=_Part_876302
+Content-Type: text/plain; charset="iso-8859-15"
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+
+
+------=_Part_876302
+Content-Type: text/html; charset="UTF-8"
+Content-Transfer-Encoding: 8bit
+Content-Disposition: inline
+
+<html><head>
+<title>eticket</title>
+</head>
+<body>
+  Yes, the text/plain part really was empty.
+</body>
+</html>
+
+------=_Part_876302--
+EOF
+
+if [ $can_reformat_texthtml -eq 1 ]; then
+  #### lynx inserts multiple blank lines, so use uniq to squeeze them.
+  mhfixmsg last -replacetextplain -outfile - | uniq > "$actual"
+  check "$expected" "$actual"
+else
+  rm -f "$expected"
+fi
+
+
+# check -noreplacetextplain
+cat >"$expected" <<EOF
+To: recipient@example.com
+From: sender@example.com
+Subject: mhfixmsg replacement of bad text/plain part test
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="----=_Part_876302"
+
+------=_Part_876302
+Content-Type: text/plain; charset="iso-8859-15"
+Content-Transfer-Encoding: 7bit
+Content-Disposition: inline
+
+
+
+------=_Part_876302
+Content-Type: text/html; charset="UTF-8"
+Content-Transfer-Encoding: 8bit
+Content-Disposition: inline
+
+<html><head>
+<title>eticket</title>
+</head>
+<body>
+  Yes, the text/plain part really was empty.
+</body>
+</html>
+
+------=_Part_876302--
+EOF
+
+mhfixmsg last -replacetextplain -noreplacetextplain -outfile "$actual"
+check "$expected" "$actual"
+
+
 # check 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/14" "${MH_TEST_DIR}/Mail/inbox/14.original"
+cp "${MH_TEST_DIR}/Mail/inbox/15" "${MH_TEST_DIR}/Mail/inbox/15.original"
 
-run_test 'mhfixmsg 14' ''
-check "${MH_TEST_DIR}/Mail/inbox/14.backup" \
-      "${MH_TEST_DIR}/Mail/inbox/14.original"
+run_test 'mhfixmsg 15' ''
+check "${MH_TEST_DIR}/Mail/inbox/15.backup" \
+      "${MH_TEST_DIR}/Mail/inbox/15.original"
 
 
 # check -normmproc
-cp "${MH_TEST_DIR}/Mail/inbox/18" "${MH_TEST_DIR}/Mail/inbox/19"
+cp "${MH_TEST_DIR}/Mail/inbox/19" "${MH_TEST_DIR}/Mail/inbox/20"
 
-run_test 'mhfixmsg 18 -normmproc'
-check "${MH_TEST_DIR}/Mail/inbox/19" \
-      "${MH_TEST_DIR}/Mail/inbox/,18" 'keep first'
+run_test 'mhfixmsg 19 -normmproc'
+check "${MH_TEST_DIR}/Mail/inbox/20" \
+      "${MH_TEST_DIR}/Mail/inbox/,19" 'keep first'
 
 
 # check -rmmproc
-run_test 'mhfixmsg 19 -rmmproc true'
-if test -f '${MH_TEST_DIR}/Mail/inbox/19.backup'; then
+run_test 'mhfixmsg 20 -rmmproc true'
+if test -f '${MH_TEST_DIR}/Mail/inbox/20.backup'; then
   echo check of mhfixmsg -rmmproc FAILED, should not have created backup file
   failed=`expr ${failed:-0} + 1`
 fi