]> diplodocus.org Git - nmh/blobdiff - test/mhfixmsg/test-mhfixmsg
Use the imperfect snprintf(3) instead of sprintf(3).
[nmh] / test / mhfixmsg / test-mhfixmsg
index 81d479665ac09b631f3b47a3aa4936011b76431a..8d7a3a857c7c081c689ca8fde16a6d7f649b7c79 100755 (executable)
@@ -17,8 +17,7 @@ fi
 setup_test
 
 #### 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"
@@ -70,7 +69,8 @@ Usage: mhfixmsg [+folder] [msgs] [switches]
   -help
 EOF
 
-run_prog mhfixmsg -help >"$actual" 2>&1
+#### Skip nmh intro text.
+run_prog mhfixmsg -help | sed '/^$/,$d' >"$actual" 2>&1
 check "$expected" "$actual"
 
 
@@ -211,13 +211,13 @@ Content-Type: multipart/alternative; boundary="----=_nmh-multipart"
 
 ------=_nmh-multipart
 Content-Type: text/plain; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 Need to go! Need ... to ... go!
 
 ------=_nmh-multipart
 Content-Type: text/html; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 <html>
 <head>
@@ -290,7 +290,7 @@ Content-Type: multipart/alternative; boundary="----=_nmh-multipart-3"
 
 ------=_nmh-multipart-3
 Content-Type: text/plain; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 ------=_nmh-multipart
 ------=_nmh-multipart-1
@@ -298,7 +298,7 @@ Content-Transfer-Encoding: 8bit
 
 ------=_nmh-multipart-3
 Content-Type: text/html; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 <html>
 <head>
@@ -368,7 +368,7 @@ Content-Type: multipart/alternative; boundary="----=_nmh-multipart"
 
 ------=_nmh-multipart
 Content-Type: text/plain; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 Need to go! Need ... to ... go!
 
@@ -442,7 +442,7 @@ Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="iso-8859-1"; name="test4.txt"
 Content-Disposition: attachment; filename="test4.txt"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is a text/plain part.
 
@@ -499,7 +499,7 @@ This is additional content after the last subpart of the multipart.
 Content-Type: text/plain; charset="iso-8859-1"
 Content-Disposition: attachment; filename="test2.txt"
 Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is the second text/plain part.
 
@@ -512,7 +512,7 @@ This is the third text/plain part.
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="iso-8859-1"; name="test4.txt"
 Content-Disposition: attachment; filename="test4.txt"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is the fourth text/plain part.
 
@@ -585,7 +585,7 @@ MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 
 ------- =_aaaaaaaaaa0
-Content-Type: text/plain; charset=UTF-8; name="nul+square.txt"
+Content-Type: text/plain; charset="UTF-8"; name="nul+square.txt"
 Content-Transfer-Encoding: base64
 
 vbI9vAAK
@@ -610,7 +610,7 @@ Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is a text plain part
 
@@ -696,10 +696,11 @@ From: sender@example.com
 Subject: mhfixmsg successful decode of text/plain with failed binary decode
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
+Content-Transfer-Encoding: binary
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is a text plain part
 
@@ -724,9 +725,10 @@ From: sender@example.com
 Subject: mhfixmsg binary decode test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary=\"----- =_aaaaaaaaaa0\"
+Content-Transfer-Encoding: binary
 
 ------- =_aaaaaaaaaa0
-Content-Type: text/plain; charset=UTF-8; name=\"nul+square.txt\"
+Content-Type: text/plain; charset=\"UTF-8\"; name=\"nul+square.txt\"
 Content-Transfer-Encoding: binary
 
 " "
@@ -749,7 +751,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
@@ -820,6 +822,7 @@ From: sender@example.com
 Subject: mhfixmsg textcharset test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
+Content-Transfer-Encoding: 8bit
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="utf-8"; name="square.txt"
@@ -1197,13 +1200,12 @@ Content-Type: multipart/alternative; boundary="----=_Part_876302"
 
 ------=_Part_876302
 Content-Type: text/plain; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 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>
@@ -1233,7 +1235,6 @@ Content-Disposition: inline
 
 ------=_Part_876302
 Content-Type: text/html; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
 Content-Disposition: inline
 
 <html><head>
@@ -1275,7 +1276,6 @@ Content-Disposition: inline
 
 ------=_Part_876302
 Content-Type: text/html; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
 Content-Disposition: inline
 
 <html><head>
@@ -1427,14 +1427,14 @@ Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 Content-Type: text/plain; charset="iso-8859-1"
 Content-Disposition: attachment; filename="test1.txt"
 Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is the text/plain part.
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/html; charset="iso-8859-1"; name="test2.txt"
 Content-Disposition: attachment; filename="test2.txt"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 <html>
 <head>
@@ -1488,7 +1488,7 @@ Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 Content-Type: text/plain; charset="iso-8859-1"
 Content-Disposition: attachment; filename="test1.txt"
 Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is the text/plain part.
 
@@ -1545,14 +1545,14 @@ Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 Content-Type: text/plain; charset="iso-8859-1"
 Content-Disposition: attachment; filename="test1.txt"
 Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is the text/plain part.
 
 ------- =_aaaaaaaaaa0
 Content-Type: application/ics; charset="iso-8859-1"; name="invite.ics"
 Content-Disposition: attachment; filename="invite.ics"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 BEGIN:VCALENDAR\r
 VERSION:2.0\r
@@ -1613,14 +1613,14 @@ Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 Content-Type: text/plain; charset="iso-8859-1"
 Content-Disposition: attachment; filename="test1.txt"
 Content-MD5: kq+Hnc2SD/eKwAnkFBDuEA==
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is the text/plain part.
 
 ------- =_aaaaaaaaaa0
 Content-Type: application/ics; charset="iso-8859-1"; name="invite.ics"
 Content-Disposition: attachment; filename="invite.ics"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 BEGIN:VCALENDAR
 VERSION:2.0
@@ -1714,6 +1714,60 @@ set -e
 check `mhpath last` "$actual"
 
 
+start_test "fix RFC 2047 encoded header parameters"
+#### Also, add C-T-E:8bit to the message headers.
+cat >"$expected" <<EOF
+To: recipient@example.com
+From: sender@example.com
+Date: Wed, 28 Sep 2016 11:24:28 -0400
+Subject: invalid header parameter encoding
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary=001a114dd3e8fe9c56053d92f414
+Content-Transfer-Encoding: 8bit
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8
+
+This is a test.
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset="UTF-8"; name*=UTF-8''test%C3%B8.txt
+Content-Disposition: attachment; filename*=UTF-8''test%C3%B8.txt
+Content-Transfer-Encoding: 8bit
+
+This is the first text/plain part, in a subpart.  The file name
+is testø.txt.
+
+--001a114dd3e8fe9c56053d92f414--
+EOF
+
+cat >`mhpath new` <<EOF
+To: recipient@example.com
+From: sender@example.com
+Date: Wed, 28 Sep 2016 11:24:28 -0400
+Subject: invalid header parameter encoding
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary=001a114dd3e8fe9c56053d92f414
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8
+
+This is a test.
+
+--001a114dd3e8fe9c56053d92f414
+Content-Type: text/plain; charset=UTF-8; name="=?UTF-8?B?dGVzdMO4LnR4dA==?="
+Content-Disposition: attachment; filename="=?UTF-8?B?dGVzdMO4LnR4dA==?="
+Content-Transfer-Encoding: 8bit
+
+This is the first text/plain part, in a subpart.  The file name
+is testø.txt.
+
+--001a114dd3e8fe9c56053d92f414--
+EOF
+run_prog mhfixmsg -file - -outfile - <`mhpath last` >"$actual" 2>/dev/null
+check "$expected" "$actual"
+
+
 # make sure there are no tmp files left over
 find "$MH_TEST_DIR/Mail" \( -name 'mhfix*' -o -name ',mhfix*' \) -print \
   >"$actual"