]> diplodocus.org Git - nmh/blobdiff - test/mhfixmsg/test-mhfixmsg
Escape literal leading full stop in man/new.man.
[nmh] / test / mhfixmsg / test-mhfixmsg
index ab0ebcb0023a1d88de4e62ad8fd9de4e8916fcfd..3f5e847e29d703b0587fc1723f4788f7b9eae5f0 100755 (executable)
@@ -16,9 +16,10 @@ fi
 
 setup_test
 
 
 setup_test
 
+check_exit '-eq 1' mhfixmsg -
+
 #### Make sure that html-to-text conversion is what we expect.
 #### 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"
 
 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"
 
 
 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
   can_reformat_texthtml=1
   if grep 'mhfixmsg-format-text/html.*w3m' "${mhn_defaults}" \
     >/dev/null; then
@@ -86,15 +86,15 @@ esac
 
 # check that non-MIME messages aren't modified
 # check -outfile
 
 # check that non-MIME messages aren't modified
 # check -outfile
-start_test "that non-MIME messages aren't modified, and -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
 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
-start_test "that non-MIME messages with no bodies aren't modified, and -outfile"
-cat >`mhpath new` <<EOF
+start_test "non-MIME messages with no bodies aren't modified, and -outfile"
+cat >"`mhpath new`" <<EOF
 From: Test <test@example.com>
 To: Some User <user@example.com>
 Date: Fri, 29 Sep 2006 00:00:00
 From: Test <test@example.com>
 To: Some User <user@example.com>
 Date: Fri, 29 Sep 2006 00:00:00
@@ -108,7 +108,7 @@ check "`mhpath last`" "$actual"
 
 # check -nofixcte
 start_test "-nofixcte"
 
 # check -nofixcte
 start_test "-nofixcte"
-cat >"$MH_TEST_DIR"/Mail/inbox/11 <<EOF
+cat >"`mhpath new`" <<EOF
 From: Anon
 To: Mailinglist
 Subject: =?ISO-8859-15?Q?Re=3A_H=E5lla_linuxsystem_uppdaterade?=
 From: Anon
 To: Mailinglist
 Subject: =?ISO-8859-15?Q?Re=3A_H=E5lla_linuxsystem_uppdaterade?=
@@ -199,6 +199,12 @@ 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 "$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"
 # 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"
@@ -212,13 +218,13 @@ Content-Type: multipart/alternative; boundary="----=_nmh-multipart"
 
 ------=_nmh-multipart
 Content-Type: text/plain; charset="Windows-1252"
 
 ------=_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"
 
 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>
 
 <html>
 <head>
@@ -235,7 +241,7 @@ Content-Transfer-Encoding: 8bit
 ------=_nmh-multipart--
 EOF
 
 ------=_nmh-multipart--
 EOF
 
-cat >"$MH_TEST_DIR"/Mail/inbox/12 <<EOF
+cat >"`mhpath new`" <<EOF
 MIME-Version: 1.0
 From: sender@example.com
 To: bonquiqui@example.com
 MIME-Version: 1.0
 From: sender@example.com
 To: bonquiqui@example.com
@@ -291,7 +297,7 @@ Content-Type: multipart/alternative; boundary="----=_nmh-multipart-3"
 
 ------=_nmh-multipart-3
 Content-Type: text/plain; charset="Windows-1252"
 
 ------=_nmh-multipart-3
 Content-Type: text/plain; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 ------=_nmh-multipart
 ------=_nmh-multipart-1
 
 ------=_nmh-multipart
 ------=_nmh-multipart-1
@@ -299,7 +305,7 @@ Content-Transfer-Encoding: 8bit
 
 ------=_nmh-multipart-3
 Content-Type: text/html; charset="Windows-1252"
 
 ------=_nmh-multipart-3
 Content-Type: text/html; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 <html>
 <head>
 
 <html>
 <head>
@@ -317,7 +323,7 @@ Content-Transfer-Encoding: 8bit
 ------=_nmh-multipart-3--
 EOF
 
 ------=_nmh-multipart-3--
 EOF
 
-cat >"$MH_TEST_DIR"/Mail/inbox/12 <<EOF
+cat >"`mhpath last`" <<EOF
 MIME-Version: 1.0
 From: sender@example.com
 To: bonquiqui@example.com
 MIME-Version: 1.0
 From: sender@example.com
 To: bonquiqui@example.com
@@ -369,7 +375,7 @@ Content-Type: multipart/alternative; boundary="----=_nmh-multipart"
 
 ------=_nmh-multipart
 Content-Type: text/plain; charset="Windows-1252"
 
 ------=_nmh-multipart
 Content-Type: text/plain; charset="Windows-1252"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 Need to go! Need ... to ... go!
 
 
 Need to go! Need ... to ... go!
 
@@ -443,14 +449,14 @@ Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="iso-8859-1"; name="test4.txt"
 Content-Disposition: attachment; filename="test4.txt"
 ------- =_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.
 
 ------- =_aaaaaaaaaa0--
 EOF
 
 
 This is a text/plain part.
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 1
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 1
@@ -500,7 +506,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-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.
 
 
 This is the second text/plain part.
 
@@ -513,7 +519,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"
 ------- =_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.
 
 
 This is the fourth text/plain part.
 
@@ -522,7 +528,7 @@ This is the fourth text/plain part.
 This is additional content after the last subpart of the multipart.
 EOF
 
 This is additional content after the last subpart of the multipart.
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 2
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 2
@@ -578,7 +584,7 @@ check "$expected" "$actual"
 #### Generated the encoded text below with:
 ####   $ printf '\275\262=\274\000\n' | base64
 start_test "attempted (default, 8 bit) -decodetext of binary text"
 #### Generated the encoded text below with:
 ####   $ printf '\275\262=\274\000\n' | base64
 start_test "attempted (default, 8 bit) -decodetext of binary text"
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg binary decode test
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg binary decode test
@@ -594,9 +600,9 @@ vbI9vAAK
 ------- =_aaaaaaaaaa0--
 EOF
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-cp -p `mhpath last` "$expected"
+cp -p "`mhpath last`" "$expected"
 run_prog mhfixmsg last
 run_prog mhfixmsg last
-check `mhpath last` "$expected" 'keep first'
+check "`mhpath last`" "$expected" 'keep first'
 
 
 # check for successful decode of a different part with attempted -decodetext
 
 
 # check for successful decode of a different part with attempted -decodetext
@@ -611,7 +617,7 @@ Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="iso-8859-1"
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is a text plain part
 
 
 This is a text plain part
 
@@ -643,7 +649,7 @@ ICA8L2JvZHk+PC9odG1sPg==
 ------- =_aaaaaaaaaa0--
 EOF
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg successful decode of text/plain with failed binary decode
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg successful decode of text/plain with failed binary decode
@@ -685,7 +691,7 @@ ICA8L2JvZHk+PC9odG1sPg==
 EOF
 
 run_prog mhfixmsg -noreformat last
 EOF
 
 run_prog mhfixmsg -noreformat last
-check `mhpath last` "$expected" 'keep first'
+check "`mhpath last`" "$expected" 'keep first'
 
 
 # check for successful decode of a different part with -decodetext of binary
 
 
 # check for successful decode of a different part with -decodetext of binary
@@ -697,10 +703,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"
 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"
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="iso-8859-1"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 This is a text plain part
 
 
 This is a text plain part
 
@@ -715,7 +722,7 @@ Content-Disposition: inline
 EOF
 
 run_prog mhfixmsg -noreformat -decodetext binary last
 EOF
 
 run_prog mhfixmsg -noreformat -decodetext binary last
-check `mhpath last` "$expected"
+check "`mhpath last`" "$expected"
 
 
 # check -decodetext of binary (containing ASCII NUL) text
 
 
 # check -decodetext of binary (containing ASCII NUL) text
@@ -725,6 +732,7 @@ From: sender@example.com
 Subject: mhfixmsg binary decode test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary=\"----- =_aaaaaaaaaa0\"
 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\"
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset=\"UTF-8\"; name=\"nul+square.txt\"
@@ -739,7 +747,7 @@ check "$expected" "$actual"
 
 
 # check that -reformat succeeds when decode of binary text fails
 
 
 # check that -reformat succeeds when decode of binary text fails
-start_test "that -reformat succeeds when decode of binary text fails"
+start_test "-reformat succeeds when decode of binary text fails"
 prepare_space >"$expected" <<'EOF'
 MIME-Version: 1.0
 Date: Thu, 11 Apr 2013 02:47:08 -0700
 prepare_space >"$expected" <<'EOF'
 MIME-Version: 1.0
 Date: Thu, 11 Apr 2013 02:47:08 -0700
@@ -750,7 +758,7 @@ Content-Type: multipart/alternative; boundary="----=_nmh-multipart"
 
 ------=_nmh-multipart
 Content-Type: text/plain; charset="ISO-8859-1"
 
 ------=_nmh-multipart
 Content-Type: text/plain; charset="ISO-8859-1"
-Content-Transfer-Encoding: 8bit
+Content-Transfer-Encoding: 7bit
 
 Mile                                     $0.00
 Time                                    $78.71
 
 Mile                                     $0.00
 Time                                    $78.71
@@ -765,7 +773,7 @@ Content-Transfer-Encoding: quoted-printable
 <body>
 EOF
 
 <body>
 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
 MIME-Version: 1.0
 Content-Type: text/html; charset="ISO-8859-1"
 Content-Transfer-Encoding: quoted-printable
@@ -821,6 +829,7 @@ From: sender@example.com
 Subject: mhfixmsg textcharset test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 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"
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; charset="utf-8"; name="square.txt"
@@ -834,7 +843,7 @@ EOF
 
 #### Generated the encoded text below with:
 ####   $ printf '\275\262=\274\n' | base64
 
 #### Generated the encoded text below with:
 ####   $ printf '\275\262=\274\n' | base64
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg textcharset test
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg textcharset test
@@ -865,7 +874,7 @@ start_test "-nofixboundary"
 cat >"$expected" <<EOF
 EOF
 
 cat >"$expected" <<EOF
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 Date: Fri, 13 May 2011 08:21:12 -0500
 Content-Type: multipart/alternative;
         boundary="----=_NextPart_000_1781A17_01CC1147.81E9467A"
 Date: Fri, 13 May 2011 08:21:12 -0500
 Content-Type: multipart/alternative;
         boundary="----=_NextPart_000_1781A17_01CC1147.81E9467A"
@@ -885,14 +894,14 @@ The boundaries of this part don't match the header boundary.
 ------=_NextPart_000_1781A1A_01CC1147.81EBA8D4--
 EOF
 
 ------=_NextPart_000_1781A1A_01CC1147.81EBA8D4--
 EOF
 
-cp -p `mhpath last` `mhpath new`
+cp -p "`mhpath last`" "`mhpath new`"
 
 run_test 'mhfixmsg last -nofixboundary' ''
 check "$MH_TEST_DIR"/Mail/inbox/18 "$MH_TEST_DIR"/Mail/inbox/19 'keep first'
 
 
 
 run_test 'mhfixmsg last -nofixboundary' ''
 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
-start_test "that message is not output when fed through stdin"
+# check that message is not output when fed through stdin (without -outfile)
+start_test "message is not output when fed through stdin"
 run_prog mhfixmsg -file - -verbose <`mhpath last` >"$actual" 2>"$actual.err"
 check "$expected" "$actual"
 if grep "mhfixmsg: $MH_TEST_DIR/Mail/.*, fix multipart boundary" \
 run_prog mhfixmsg -file - -verbose <`mhpath last` >"$actual" 2>"$actual.err"
 check "$expected" "$actual"
 if grep "mhfixmsg: $MH_TEST_DIR/Mail/.*, fix multipart boundary" \
@@ -934,8 +943,8 @@ check "$expected" "$actual"
 
 
 # check that message is not modified when -fixboundary fails
 
 
 # check that message is not modified when -fixboundary fails
-start_test "that message is not modified when -fixboundary fails"
-cat >`mhpath new` <<EOF
+start_test "message is not modified when -fixboundary fails"
+cat >"`mhpath new`" <<EOF
 Date: Fri, 13 May 2011 08:21:12 -0500
 Content-Type: multipart/alternative;
         boundary="----=_ NextPart_000_1781A17_01CC1147.81E9467A"
 Date: Fri, 13 May 2011 08:21:12 -0500
 Content-Type: multipart/alternative;
         boundary="----=_ NextPart_000_1781A17_01CC1147.81E9467A"
@@ -956,15 +965,15 @@ The boundary below doesn't match the header boundary.
 NextPart_000_1781A1A_01CC1147.81EBA8D4--
 EOF
 
 NextPart_000_1781A1A_01CC1147.81EBA8D4--
 EOF
 
-cp -p `mhpath last` "$expected"
+cp -p "`mhpath last`" "$expected"
 run_test "mhfixmsg last -outfile $actual" ''
 check "$expected" "$actual"
 
 
 # check that text/plain part is not added to text/html in multipart/related
 # when it shouldn't be
 run_test "mhfixmsg last -outfile $actual" ''
 check "$expected" "$actual"
 
 
 # check that text/plain part is not added to text/html in multipart/related
 # when it shouldn't be
-start_test "that text/plain part is not added to text/html in multipart/related when it shouldn't be"
-cat >`mhpath new` <<EOF
+start_test "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
 MIME-Version: 1.0
 Date: Tue, 26 Feb 2013 18:07:20 -0600
 Subject: multipart/related, not /alternative
@@ -993,7 +1002,7 @@ Your email client does not support HTML messages
 ------=_Part_90310_101292502.1--
 EOF
 
 ------=_Part_90310_101292502.1--
 EOF
 
-cp -p `mhpath last` "$expected"
+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.
@@ -1006,7 +1015,7 @@ fi
 
 # check that text/plain part is added to text/html in multipart/related
 # when it should be
 
 # check that text/plain part is added to text/html in multipart/related
 # when it should be
-start_test "that text/plain part is added to text/html in multipart/related when it should be"
+start_test "text/plain part is added to text/html in multipart/related when it should be"
 cat >"$expected" <<EOF
 MIME-Version: 1.0
 Date: Tue, 26 Feb 2013 18:07:20 -0600
 cat >"$expected" <<EOF
 MIME-Version: 1.0
 Date: Tue, 26 Feb 2013 18:07:20 -0600
@@ -1035,7 +1044,7 @@ Content-Transfer-Encoding: 7bit
 ------=_Part_90310_101292502.1--
 EOF
 
 ------=_Part_90310_101292502.1--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 MIME-Version: 1.0
 Date: Tue, 26 Feb 2013 18:07:20 -0600
 Subject: multipart/related, not /alternative
 MIME-Version: 1.0
 Date: Tue, 26 Feb 2013 18:07:20 -0600
 Subject: multipart/related, not /alternative
@@ -1068,6 +1077,7 @@ fi
 
 
 # check handling of rfc822 message type
 
 
 # check handling of rfc822 message type
+# also, checks -fixboundary
 start_test "handling of rfc822 message type"
 cat >"$expected" <<EOF
 From: Test <test@example.com>
 start_test "handling of rfc822 message type"
 cat >"$expected" <<EOF
 From: Test <test@example.com>
@@ -1098,14 +1108,14 @@ This is an RFC-822 message.
 and some garbage at the end
 EOF
 
 and some garbage at the end
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 From: Test <test@example.com>
 To: Some User <user@example.com>
 Date: Fri, 29 Sep 2006 00:00:00
 Message-Id: @test.nmh
 Subject: message with message/rfc822 attachment
 MIME-Version: 1.0
 From: Test <test@example.com>
 To: Some User <user@example.com>
 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
 
 
 and some garbage before the attachment
 
@@ -1144,7 +1154,7 @@ There are two CR-LF pairs at the end of this sentence.
 \r
 EOF
 
 \r
 EOF
 
-cat >`mhpath new` <<'EOF'
+cat >"`mhpath new`" <<'EOF'
 MIME-Version: 1.0
 From: sender@example.com
 To: recipient@example.com
 MIME-Version: 1.0
 From: sender@example.com
 To: recipient@example.com
@@ -1172,7 +1182,7 @@ There were two CR-LF pairs at the end of this sentence.
 
 EOF
 
 
 EOF
 
-cat >`mhpath new` <<'EOF'
+cat >"`mhpath new`" <<'EOF'
 MIME-Version: 1.0
 From: sender@example.com
 To: recipient@example.com
 MIME-Version: 1.0
 From: sender@example.com
 To: recipient@example.com
@@ -1198,13 +1208,12 @@ Content-Type: multipart/alternative; boundary="----=_Part_876302"
 
 ------=_Part_876302
 Content-Type: text/plain; charset="UTF-8"
 
 ------=_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"
 
 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>
 Content-Disposition: inline
 
 <html><head>
@@ -1218,7 +1227,7 @@ Content-Disposition: inline
 ------=_Part_876302--
 EOF
 
 ------=_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
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg replacement of bad text/plain part test
@@ -1234,7 +1243,6 @@ Content-Disposition: inline
 
 ------=_Part_876302
 Content-Type: text/html; charset="UTF-8"
 
 ------=_Part_876302
 Content-Type: text/html; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
 Content-Disposition: inline
 
 <html><head>
 Content-Disposition: inline
 
 <html><head>
@@ -1276,7 +1284,6 @@ Content-Disposition: inline
 
 ------=_Part_876302
 Content-Type: text/html; charset="UTF-8"
 
 ------=_Part_876302
 Content-Type: text/html; charset="UTF-8"
-Content-Transfer-Encoding: 8bit
 Content-Disposition: inline
 
 <html><head>
 Content-Disposition: inline
 
 <html><head>
@@ -1320,7 +1327,7 @@ Content-Disposition: attachment;
 ------- =_aaaaaaaaaa0--
 EOF
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 Subject: test
 From: sender@example.com
 To: recipient@example.com
 Subject: test
 From: sender@example.com
@@ -1347,27 +1354,29 @@ run_test 'mhfixmsg last -outfile '"$actual" ''
 check "$expected" "$actual"
 
 
 check "$expected" "$actual"
 
 
-# check rmmproc
-start_test "rmmproc"
-cat >"$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
 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
-start_test "-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
 
 
 # check -rmmproc
@@ -1396,7 +1405,7 @@ this is plain text
 ------- =_aaaaaaaaaa0--
 EOF
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg with incorrect Content-Type
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg with incorrect Content-Type
@@ -1412,7 +1421,7 @@ this is plain text
 EOF
 
 mhfixmsg -fixtype application/octet-stream last
 EOF
 
 mhfixmsg -fixtype application/octet-stream last
-check "$expected" `mhpath last`
+check "$expected" "`mhpath last`"
 
 
 # check default -decodetypes
 
 
 # check default -decodetypes
@@ -1428,14 +1437,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-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"
 
 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>
 
 <html>
 <head>
@@ -1447,7 +1456,7 @@ Content-Transfer-Encoding: 8bit
 ------- =_aaaaaaaaaa0--
 EOF
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 3
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 3
@@ -1489,7 +1498,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-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.
 
 
 This is the text/plain part.
 
@@ -1504,7 +1513,7 @@ CjwvYm9keT4NCjwvaHRtbD4NCg==
 ------- =_aaaaaaaaaa0--
 EOF
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 4
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 4
@@ -1546,14 +1555,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-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"
 
 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
 
 BEGIN:VCALENDAR\r
 VERSION:2.0\r
@@ -1569,7 +1578,7 @@ END:VCALENDAR
 ------- =_aaaaaaaaaa0--
 EOF
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 5
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 5
@@ -1614,14 +1623,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-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"
 
 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
 
 BEGIN:VCALENDAR
 VERSION:2.0
@@ -1637,7 +1646,7 @@ END:VCALENDAR
 ------- =_aaaaaaaaaa0--
 EOF
 
 ------- =_aaaaaaaaaa0--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 5
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg decode test 5
@@ -1671,14 +1680,14 @@ 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
 
 # check that input is passed through to output when there's a parse error
 # (the charset string is missing its closing quote) with -outfile
-start_test "that input is passed through to output when there's a parse error"
+start_test "input is passed through to output when there's a parse error"
 cat >"$expected.err" <<EOF
 mhfixmsg: invalid quoted-string in message 31's Content-Type: field
           (parameter charset)
 mhfixmsg: unable to parse message 31
 EOF
 
 cat >"$expected.err" <<EOF
 mhfixmsg: invalid quoted-string in message 31's Content-Type: field
           (parameter charset)
 mhfixmsg: unable to parse message 31
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg pass through on parse error
 To: recipient@example.com
 From: sender@example.com
 Subject: mhfixmsg pass through on parse error
@@ -1699,7 +1708,7 @@ set +e
 run_prog mhfixmsg last -outfile "$actual" 2>"$actual.err"
 set -e
 #### Expected output is identical to the input message.
 run_prog mhfixmsg last -outfile "$actual" 2>"$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"
 
 
 check "$expected.err" "$actual.err"
 
 
@@ -1707,15 +1716,27 @@ 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.
 # (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 "that input is passed through to output when there's a parse error"
+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.
 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"
 
 
 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
 cat >"$expected" <<EOF
 To: recipient@example.com
 From: sender@example.com
@@ -1723,6 +1744,7 @@ Date: Wed, 28 Sep 2016 11:24:28 -0400
 Subject: invalid header parameter encoding
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary=001a114dd3e8fe9c56053d92f414
 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
 
 --001a114dd3e8fe9c56053d92f414
 Content-Type: text/plain; charset=UTF-8
@@ -1740,7 +1762,7 @@ is testø.txt.
 --001a114dd3e8fe9c56053d92f414--
 EOF
 
 --001a114dd3e8fe9c56053d92f414--
 EOF
 
-cat >`mhpath new` <<EOF
+cat >"`mhpath new`" <<EOF
 To: recipient@example.com
 From: sender@example.com
 Date: Wed, 28 Sep 2016 11:24:28 -0400
 To: recipient@example.com
 From: sender@example.com
 Date: Wed, 28 Sep 2016 11:24:28 -0400