]> diplodocus.org Git - nmh/blobdiff - test/mhbuild/test-utf8-body
Add gcc's malloc function attribute.
[nmh] / test / mhbuild / test-utf8-body
index e7cb2f8300bc35fec5b366732803f35da2b564d4..1c57f4bbcae1f2f82540a0dd9e8c29f5534d931f 100755 (executable)
@@ -16,61 +16,61 @@ fi
 
 setup_test
 testname="${MH_TEST_DIR}/$$"
 
 setup_test
 testname="${MH_TEST_DIR}/$$"
+expected="$MH_TEST_DIR/$$.expected"
+actual="$MH_TEST_DIR/$$.actual"
 
 
+require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8
 
 #### Rely on sendmail/pipe below to override default mts.
 mts_fakesendmail="${MHMTSCONF}-fakesendmail"
 cp "${MHMTSCONF}" "$mts_fakesendmail"
 
 #### Rely on sendmail/pipe below to override default mts.
 mts_fakesendmail="${MHMTSCONF}-fakesendmail"
 cp "${MHMTSCONF}" "$mts_fakesendmail"
-printf "%s\n" "sendmail: ${srcdir}/test/fakesendmail" >>"$mts_fakesendmail"
+printf 'sendmail: %s/test/fakesendmail\n' "$srcdir" >>"$mts_fakesendmail"
 MHMTSCONF="$mts_fakesendmail"
 
 # argument: expected output
 test_attachment ()
 {
 MHMTSCONF="$mts_fakesendmail"
 
 # argument: expected output
 test_attachment ()
 {
-  send -draft -mts sendmail/pipe
+  run_prog send -draft -mts sendmail/pipe
 
   # fakesendmail drops the message and any cc's into this mbox.
   mbox="${MH_TEST_DIR}"/Mail/fakesendmail.mbox
   inc -silent -file "$mbox"
 
   # fakesendmail drops the message and any cc's into this mbox.
   mbox="${MH_TEST_DIR}"/Mail/fakesendmail.mbox
   inc -silent -file "$mbox"
-  rm -f "$mbox" "$mbox.map"
-
-  cur=`mhpath cur`
+  rm -f "$mbox"
 
   #
   # It's hard to calculate the exact Date: header post is going to
   # use, so we'll just use sed to remove the actual date so we can easily
 
   #
   # It's hard to calculate the exact Date: header post is going to
   # use, so we'll just use sed to remove the actual date so we can easily
-  # compare it against our "correct" output.  And same for
-  # Content-ID and charset.
+  # compare it against our "correct" output.  And same for charset,
+  # because mime_type() can rely on file(1) --mime-encoding.
   #
   #
-  sed -e 's/^Date:.*/Date:/' \
-      -e 's/^Content-ID:.*/Content-ID:/' \
-      -e 's/; charset=".*//' \
-      "$cur" > "${testname}.actual"
+  sed -e 's/^Date:.*/Date:/' -e 's/; charset="[^;]*//' \
+      "`mhpath cur`" > "${testname}.actual"
 
   check "${testname}.actual" "$1"
 }
 
 
   check "${testname}.actual" "$1"
 }
 
+
 # check that 7-bit body isn't encoded
 # check that 7-bit body isn't encoded
+start_test "7-bit body isn't encoded"
 cat > "${MH_TEST_DIR}/attachment.txt" <<EOF
 this is an attachment
 EOF
 
 cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
 From: Mr Nobody <nobody@example.com>
 cat > "${MH_TEST_DIR}/attachment.txt" <<EOF
 this is an attachment
 EOF
 
 cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
 From: Mr Nobody <nobody@example.com>
-To: Somebody Else <somebody@example.com>
+To: Somebody <somebody@example.com>
 Subject: Test
 Subject: Test
-Nmh-Attachment: $MH_TEST_DIR/attachment.txt
+Nmh-Attach: $MH_TEST_DIR/attachment.txt
 
 This is a test.
 EOF
 
 cat > "${testname}.expected" <<EOF
 From: Mr Nobody <nobody@example.com>
 
 This is a test.
 EOF
 
 cat > "${testname}.expected" <<EOF
 From: Mr Nobody <nobody@example.com>
-To: Somebody Else <somebody@example.com>
+To: Somebody <somebody@example.com>
 Subject: Test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 Subject: Test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
-Content-ID:
 Date:
 
 ------- =_aaaaaaaaaa0
 Date:
 
 ------- =_aaaaaaaaaa0
@@ -90,32 +90,33 @@ EOF
 
 test_attachment "${testname}.expected"
 
 
 test_attachment "${testname}.expected"
 
-# check that 8-bit body is still encoded as quoted-printable
-# text/plain, even with an attachment
 
 
+# check that 8-bit body is encoded as quoted-printable text/plain,
+# even with an attachment
+start_test '8-bit body is encoded as quoted-printable text/plain'
 cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
 From: Mr Nobody <nobody@example.com>
 cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
 From: Mr Nobody <nobody@example.com>
-To: Somebody Else <somebody@example.com>
+To: Somebody <somebody@example.com>
 Subject: Test
 Subject: Test
-Nmh-Attachment: $MH_TEST_DIR/attachment.txt
+Nmh-Attach: $MH_TEST_DIR/attachment.txt
 
 
-¡Ay, caramba!
+¡Ay, caramba!
 EOF
 
 cat > "${testname}.expected" <<EOF
 From: Mr Nobody <nobody@example.com>
 EOF
 
 cat > "${testname}.expected" <<EOF
 From: Mr Nobody <nobody@example.com>
-To: Somebody Else <somebody@example.com>
+To: Somebody <somebody@example.com>
 Subject: Test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
 Subject: Test
 MIME-Version: 1.0
 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
-Content-ID:
+Content-Transfer-Encoding: 8bit
 Date:
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain
 Date:
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain
-Content-Transfer-Encoding: quoted-printable
+Content-Transfer-Encoding: 8bit
 
 
-=A1Ay, caramba!
+¡Ay, caramba!
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; name="attachment.txt"
 
 ------- =_aaaaaaaaaa0
 Content-Type: text/plain; name="attachment.txt"
@@ -129,6 +130,105 @@ EOF
 
 test_attachment "${testname}.expected"
 
 
 test_attachment "${testname}.expected"
 
+
+# check that 8-bit attachment gets C-T-E
+start_test '8-bit attachment gets C-T-E'
+rm -f "${MH_TEST_DIR}/attachment.txt"
+cat > "${MH_TEST_DIR}/attachment.txt" <<EOF
+8-bit attachment, ¡Ay, caramba!
+EOF
+
+cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
+From: Mr Nobody <nobody@example.com>
+To: Somebody <somebody@example.com>
+Subject: Test
+Nmh-Attach: $MH_TEST_DIR/attachment.txt
+EOF
+
+cat > "${testname}.expected" <<EOF
+From: Mr Nobody <nobody@example.com>
+To: Somebody <somebody@example.com>
+Subject: Test
+MIME-Version: 1.0
+Content-Type: text/plain; name="attachment.txt"
+Content-Description: attachment.txt
+Content-Disposition: attachment; filename="attachment.txt"
+Content-Transfer-Encoding: 8bit
+Date:
+
+8-bit attachment, ¡Ay, caramba!
+EOF
+
+test_attachment "${testname}.expected"
+
+
+# check 8-bit body but make sure that the locale is set to C, which
+# should cause mhbuild to fail
+start_test '8-bit body with C locale'
+cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
+From: Mr Nobody <nobody@example.com>
+To: Somebody <somebody@example.com>
+Subject: Test
+Nmh-Attach: $MH_TEST_DIR/attachment.txt
+
+¡Ay, caramba!
+EOF
+
+LC_ALL="C"; export LC_ALL
+
+set +e
+run_prog send -draft -mts sendmail/pipe > "$actual" 2>&1
+set -e
+
+cat > "$expected" <<EOF
+mhbuild: Text content contains 8 bit characters, but character set is US-ASCII
+${MH_INST_DIR}${bindir}/mhbuild: exit 1
+EOF
+
+check "$expected" "$actual"
+
+
+# previous test, but with locale profile entry
+start_test '8-bit body with C locale with locale profile entry'
+
+printf 'locale: en_US.UTF-8\n' >> "${MH}"
+
+cat > "${testname}.expected" <<EOF
+From: Mr Nobody <nobody@example.com>
+To: Somebody <somebody@example.com>
+Subject: Test
+MIME-Version: 1.0
+Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0"
+Content-Transfer-Encoding: 8bit
+Date:
+
+------- =_aaaaaaaaaa0
+Content-Type: text/plain
+Content-Transfer-Encoding: 8bit
+
+¡Ay, caramba!
+
+------- =_aaaaaaaaaa0
+Content-Type: text/plain; name="attachment.txt"
+Content-Description: attachment.txt
+Content-Disposition: attachment; filename="attachment.txt"
+Content-Transfer-Encoding: 8bit
+
+8-bit attachment, ¡Ay, caramba!
+
+------- =_aaaaaaaaaa0--
+EOF
+
+test_attachment "${testname}.expected"
+
+
 rm -f ${MHMTSCONF} "${MH_TEST_DIR}/attachment.txt"
 
 rm -f ${MHMTSCONF} "${MH_TEST_DIR}/attachment.txt"
 
+finish_test
 exit ${failed:-0}
 exit ${failed:-0}
+
+# emacs hackage to ensure that it writes the inverted exclamation
+# point as UTF-8 multibyte character \xC2\xA1 instead of just \xA1.
+# Local Variables:
+# coding: utf-8
+# End: