]> diplodocus.org Git - nmh/blobdiff - test/mhfixmsg/test-mhfixmsg
Rearranged code to avoid "might be clobbered by longjmp" warnings from
[nmh] / test / mhfixmsg / test-mhfixmsg
index 317d02b28000c36210f1961684e4b7fac2830d44..cc69aea7a6ffcd9d7aa3e1bfab22e74e4f438dbc 100755 (executable)
@@ -14,15 +14,15 @@ fi
 
 . "${srcdir}/test/post/test-post-common.sh"
 
 
 . "${srcdir}/test/post/test-post-common.sh"
 
+#### 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
+
 expected="$MH_TEST_DIR/test-mhfixmsg$$.expected"
 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"
 
 expected="$MH_TEST_DIR/test-mhfixmsg$$.expected"
 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"
 
-#### Make sure that html-to-text conversion is what we expect.
-LC_ALL=en_US.UTF-8; export LC_ALL
-
-set +e
 if grep mhfixmsg-format-text/html "${MH_TEST_DIR}/Mail/mhn.defaults" \
   >/dev/null; then
   can_reformat_texthtml=1
 if grep mhfixmsg-format-text/html "${MH_TEST_DIR}/Mail/mhn.defaults" \
   >/dev/null; then
   can_reformat_texthtml=1
@@ -33,15 +33,12 @@ if grep mhfixmsg-format-text/html "${MH_TEST_DIR}/Mail/mhn.defaults" \
     #### relics from this test if it is writeable but doesn't already
     #### have a .w3m, and to not depend on whatever is in that if it
     #### does already exist, overwrite $HOME if using w3m.
     #### relics from this test if it is writeable but doesn't already
     #### have a .w3m, and to not depend on whatever is in that if it
     #### does already exist, overwrite $HOME if using w3m.
-    HOME="$MHTMPDIR"
-    export HOME
+    HOME="$MHTMPDIR"; export HOME
   fi
 else
   fi
 else
-  echo "$0: skipping -reformat check because \
-    mhfixmsg-format-text/html is not available"
+  echo "$0: skipping -reformat check because no text browser was found"
   can_reformat_texthtml=0
 fi
   can_reformat_texthtml=0
 fi
-set -e
 
 
 # check -help
 
 
 # check -help
@@ -51,7 +48,7 @@ Usage: mhfixmsg [+folder] [msgs] [switches]
   switches are:
   -decodetext 8bit|7bit
   -nodecodetext
   switches are:
   -decodetext 8bit|7bit
   -nodecodetext
-  -[no]textcodeset
+  -[no]textcharset
   -[no]reformat
   -[no]replacetextplain
   -[no]fixboundary
   -[no]reformat
   -[no]replacetextplain
   -[no]fixboundary
@@ -60,6 +57,7 @@ Usage: mhfixmsg [+folder] [msgs] [switches]
   -outfile file
   -rmmproc program
   -normmproc
   -outfile file
   -rmmproc program
   -normmproc
+  -[no]changecur
   -[no]verbose
   -version
   -help
   -[no]verbose
   -version
   -help
@@ -468,8 +466,7 @@ This is additional content before the first subpart of the multipart.
 
 ------- =_aaaaaaaaaa0
 Content-Type: multipart/related;
 
 ------- =_aaaaaaaaaa0
 Content-Type: multipart/related;
-    type="multipart/alternative";
-    boundary="subpart__1.1"
+    type="text/plain"; boundary="subpart__1.1"
 
 --subpart__1.1
 Content-Type: text/plain; charset="iso-8859-1"
 
 --subpart__1.1
 Content-Type: text/plain; charset="iso-8859-1"
@@ -518,8 +515,7 @@ This is additional content before the first subpart of the multipart.
 
 ------- =_aaaaaaaaaa0
 Content-Type: multipart/related;
 
 ------- =_aaaaaaaaaa0
 Content-Type: multipart/related;
-    type="multipart/alternative";
-    boundary="subpart__1.1"
+    type="text/plain"; boundary="subpart__1.1"
 
 --subpart__1.1
 Content-Type: text/plain; charset="iso-8859-1"
 
 --subpart__1.1
 Content-Type: text/plain; charset="iso-8859-1"
@@ -562,7 +558,7 @@ check "$expected" "$actual"
 
 # check attempted -decode of binary text
 #### Generated the encoded text below with:
 
 # check attempted -decode of binary text
 #### Generated the encoded text below with:
-####   $ printf '\x0d\xbd\xb2=\xbc\n' | base64
+####   $ printf '\x0\xbd\xb2=\xbc\n' | base64
 cat >`mhpath new` <<EOF
 To: recipient@example.com
 From: sender@example.com
 cat >`mhpath new` <<EOF
 To: recipient@example.com
 From: sender@example.com
@@ -571,18 +567,16 @@ MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 
 ------- =_aaaaaaaaaa0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 
 ------- =_aaaaaaaaaa0
-Content-Type: text/plain; charset="iso-8859-1"; name="square.txt"
+Content-Type: text/plain; charset="iso-8859-1"; name="nul+square.txt"
 Content-Transfer-Encoding: base64
 
 Content-Transfer-Encoding: base64
 
-Db2yPbwK
+AL2yPbwK
 
 ------- =_aaaaaaaaaa0--
 EOF
 
 cp -p `mhpath last` "$expected"
 
 ------- =_aaaaaaaaaa0--
 EOF
 
 cp -p `mhpath last` "$expected"
-set +e
 run_prog mhfixmsg last
 run_prog mhfixmsg last
-set -e
 check `mhpath last` "$expected" 'keep first'
 
 
 check `mhpath last` "$expected" 'keep first'
 
 
@@ -594,7 +588,7 @@ MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary=\"----- =_aaaaaaaaaa0\"
 
 ------- =_aaaaaaaaaa0
 Content-Type: multipart/mixed; boundary=\"----- =_aaaaaaaaaa0\"
 
 ------- =_aaaaaaaaaa0
-Content-Type: text/plain; charset=\"iso-8859-1\"; name=\"square.txt\"
+Content-Type: text/plain; charset=\"iso-8859-1\"; name=\"nul+square.txt\"
 Content-Transfer-Encoding: binary
 
 " "
 Content-Transfer-Encoding: binary
 
 " "
@@ -680,13 +674,13 @@ else
 fi
 
 
 fi
 
 
-# check -textcodeset
+# check -textcharset
 # Also checks preservation of attributes after one (charset) that is
 # modified.
 cat >"$expected" <<EOF
 To: recipient@example.com
 From: sender@example.com
 # Also checks preservation of attributes after one (charset) that is
 # modified.
 cat >"$expected" <<EOF
 To: recipient@example.com
 From: sender@example.com
-Subject: mhfixmsg textcodeset test
+Subject: mhfixmsg textcharset test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 
@@ -705,7 +699,7 @@ EOF
 cat >`mhpath new` <<EOF
 To: recipient@example.com
 From: sender@example.com
 cat >`mhpath new` <<EOF
 To: recipient@example.com
 From: sender@example.com
-Subject: mhfixmsg textcodeset test
+Subject: mhfixmsg textcharset test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 
@@ -719,17 +713,13 @@ vbI9vAo=
 ------- =_aaaaaaaaaa0--
 EOF
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-set +e
-run_prog 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 "$0: skipping -textcodeset check because nmh was built without iconv"
-  rm -f "$expected" "$actual" "$actual.err"
-else
+if test "$ICONV_ENABLED" -eq 1; then
+  run_prog mhfixmsg last -textcharset utf-8 -outfile "$actual" 2>&1
   check "$expected" "$actual"
   check "$expected" "$actual"
-  rm "$actual.err"
+else
+  echo "$0: skipping -textcharset check because nmh was built without iconv"
+  rm -f "$expected"
 fi
 fi
-set -e
 
 
 # check -nofixboundary
 
 
 # check -nofixboundary
@@ -780,7 +770,7 @@ fi
 cat >"$expected" <<EOF
 Date: Fri, 13 May 2011 08:21:12 -0500
 Content-Type: multipart/alternative;
 cat >"$expected" <<EOF
 Date: Fri, 13 May 2011 08:21:12 -0500
 Content-Type: multipart/alternative;
-        boundary="----=_NextPart_000_1781A1A_01CC1147.81EBA8D4"
+       boundary="----=_NextPart_000_1781A1A_01CC1147.81EBA8D4"
 Content-Transfer-Encoding: 8bit
 MIME-Version: 1.0
 From: <sender@example.com>
 Content-Transfer-Encoding: 8bit
 MIME-Version: 1.0
 From: <sender@example.com>
@@ -802,24 +792,16 @@ run_test 'mhfixmsg last -outfile '"$actual"' -verbose' \
 check "$expected" "$actual"
 
 
 check "$expected" "$actual"
 
 
-# check that text/plain part is added to lone text/html in multipart/related
-prepare_space >"$expected" <<EOF
+# check that text/plain part is not added to text/html in multipart/related
+# when it shouldn't be
+cat >`mhpath new` <<EOF
 MIME-Version: 1.0
 Date: Tue, 26 Feb 2013 18:07:20 -0600
 Subject: multipart/related, not /alternative
 Content-Type: multipart/related;
 MIME-Version: 1.0
 Date: Tue, 26 Feb 2013 18:07:20 -0600
 Subject: multipart/related, not /alternative
 Content-Type: multipart/related;
-        boundary="----=_Part_90310_101292502.1"
+        type="text/html"; boundary="----=_Part_90310_101292502.1"
 
 ------=_Part_90310_101292502.1
 
 ------=_Part_90310_101292502.1
-Content-Type: multipart/alternative; boundary="----=_nmh-multipart1"
-
-------=_nmh-multipart1
-Content-Type: text/plain; charset="us-ascii"
-Content-Transfer-Encoding: 7bit
-
-This is the real content.
-
-------=_nmh-multipart1
 Content-Type: text/html; charset="us-ascii"
 Content-Transfer-Encoding: 7bit
 
 Content-Type: text/html; charset="us-ascii"
 Content-Transfer-Encoding: 7bit
 
@@ -832,8 +814,6 @@ Content-Transfer-Encoding: 7bit
   </body>
 </html>
 
   </body>
 </html>
 
-------=_nmh-multipart1--
-
 ------=_Part_90310_101292502.1
 Content-Type: text/plain; charset="us-ascii"
 Content-Transfer-Encoding: 7bit
 ------=_Part_90310_101292502.1
 Content-Type: text/plain; charset="us-ascii"
 Content-Transfer-Encoding: 7bit
@@ -843,32 +823,7 @@ Your email client does not support HTML messages
 ------=_Part_90310_101292502.1--
 EOF
 
 ------=_Part_90310_101292502.1--
 EOF
 
-cat >`mhpath new` <<EOF
-MIME-Version: 1.0
-Date: Tue, 26 Feb 2013 18:07:20 -0600
-Subject: multipart/related, not /alternative
-Content-Type: multipart/related;
-        boundary="----=_Part_90310_101292502.1"
-
-------=_Part_90310_101292502.1
-Content-Type: text/html; charset="us-ascii"
-Content-Transfer-Encoding: 7bit
-
-<html><head>
-    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
-    <title>HTML Content</title>
-  </head>
-  <body>
-    This is the real content.
-  </body>
-</html>
-------=_Part_90310_101292502.1
-Content-Type: text/plain; charset="us-ascii"
-Content-Transfer-Encoding: 7bit
-
-Your email client does not support HTML messages
-------=_Part_90310_101292502.1--
-EOF
+cp -p `mhpath last` "$expected"
 
 if [ $can_reformat_texthtml -eq 1 ]; then
   #### lynx inserts multiple blank lines, so squeeze them.
 
 if [ $can_reformat_texthtml -eq 1 ]; then
   #### lynx inserts multiple blank lines, so squeeze them.
@@ -1074,6 +1029,58 @@ run_prog mhfixmsg last -replacetextplain -noreplacetextplain -outfile "$actual"
 check "$expected" "$actual"
 
 
 check "$expected" "$actual"
 
 
+# check removal of extraneous trailing semicolon from header parameter list
+cat >"$expected" <<EOF
+To: recipient@example.com
+Subject: test
+From: sender@example.com
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
+
+------- =_aaaaaaaaaa0
+Content-Type: text/plain; charset="us-ascii"
+
+test
+
+------- =_aaaaaaaaaa0
+Content-Type: text/plain; charset="us-ascii";
+ name="DATE"
+Content-Description: check folded headers, with and without trailing semicolon
+Content-Disposition: attachment;
+ filename="DATE"
+
+14 April 2014
+
+------- =_aaaaaaaaaa0--
+EOF
+
+cat >`mhpath new` <<EOF
+To: recipient@example.com
+Subject: test
+From: sender@example.com
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
+
+------- =_aaaaaaaaaa0
+Content-Type: text/plain; charset="us-ascii";
+
+test
+
+------- =_aaaaaaaaaa0
+Content-Type: text/plain; charset="us-ascii";
+ name="DATE"
+Content-Description: check folded headers, with and without trailing semicolon
+Content-Disposition: attachment;
+ filename="DATE";
+
+14 April 2014
+
+------- =_aaaaaaaaaa0--
+EOF
+run_test 'mhfixmsg last -outfile '"$actual" ''
+check "$expected" "$actual"
+
+
 # check rmmproc
 cat >"$MH_TEST_DIR/Mail/rmmproc" <<'EOF'
 mv "$1" "$1.backup"
 # check rmmproc
 cat >"$MH_TEST_DIR/Mail/rmmproc" <<'EOF'
 mv "$1" "$1.backup"