setup_test
testname="${MH_TEST_DIR}/$$"
+expected="$MH_TEST_DIR/$$.expected"
+actual="$MH_TEST_DIR/$$.actual"
+require_locale en_US.utf8
+LC_ALL=en_US.UTF-8; export LC_ALL
#### 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 ()
{
- 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"
rm -f "$mbox" "$mbox.map"
- cur=`mhpath cur`
-
#
# 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 charset.
#
- sed -e 's/^Date:.*/Date:/' \
- -e 's/; charset=".*//' \
- "$cur" > "${testname}.actual"
+ sed -e 's/^Date:.*/Date:/' -e 's/; charset="[^;]*//' \
+ "`mhpath cur`" > "${testname}.actual"
check "${testname}.actual" "$1"
}
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
-Nmh-Attachment: $MH_TEST_DIR/attachment.txt
+Attach: $MH_TEST_DIR/attachment.txt
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"
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
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
-Nmh-Attachment: $MH_TEST_DIR/attachment.txt
+Attach: $MH_TEST_DIR/attachment.txt
-¡Ay, caramba!
+¡Ay, caramba!
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"
+Content-Transfer-Encoding: 8bit
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"
test_attachment "${testname}.expected"
+# Repeat the previous test, but make sure that the locale is set to C, which
+# should cause mhbuild to fail
+
+cat > "${MH_TEST_DIR}/Mail/draft" <<EOF
+From: Mr Nobody <nobody@example.com>
+To: Somebody <somebody@example.com>
+Subject: Test
+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"
+
rm -f ${MHMTSCONF} "${MH_TEST_DIR}/attachment.txt"
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: