#!/bin/sh # # Test post -messageid # set -e if test -z "${MH_OBJ_DIR}"; then srcdir=`dirname "$0"`/../.. MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR fi . "${MH_OBJ_DIR}/test/common.sh" setup_test testname="${MH_TEST_DIR}/$$" cat > "${MH_TEST_DIR}/Mail/draft" < To: Somebody Else Subject: Test This is a test EOF cat > "${testname}.expected" < RCPT TO: DATA From: Mr Nobody To: Somebody Else Subject: Test Date: This is a test . QUIT EOF # check invalid -messageid selection run_test "send -draft -messageid invalid" \ "post: unsupported messageid \"invalid\" send: message not delivered to anyone" #### 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" MHMTSCONF="$mts_fakesendmail" # $1: -messageid switch selection # arguments: expected output(s) test_messageid () { msgid_style="$1" send -draft -mts sendmail/pipe -msgid -messageid "$msgid_style" shift # 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" n=1 for expected in "$@"; do cur=`mhpath cur` # Verify that Message-ID is of the right form. We'll see how # portable these grep regular expressions are. case "$msgid_style" in localname) # e.g., Message-ID: <5348.1342884222@localhost.localdomain> id='^Message-ID: <[0-9]\{1,\}\.[0-9]\{1,\}@' ;; random) # e.g., Message-ID: <5364-1342884222.165897@ldYM.FXwU.bBqK> id='^Message-ID: <[0-9]\{1,\}-[0-9]\{1,\}\.[0-9]\{6,6\}@[-_0-9A-Za-z]\{4,4\}\.[-_0-9A-Za-z]\{4,4\}\.[-_0-9A-Za-z]\{4,4\}' ;; *) printf "$0: unexpected messageid: $msgid_style"; exit 1;; esac if grep "$id" "$cur" >/dev/null; then : else mv "$cur" "${testname}.actual" printf "$0: unexpected "$msgid_style" Message-ID format, \ see ${testname}.actual\n" exit 1 fi # # 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 # Message-ID. # sed -e 's/^Date:.*/Date:/' \ -e 's/^Message-ID:.*/Message-ID:/' \ "$cur" > "${testname}.actual$n" check "${testname}.actual$n" "$expected" if [ "$cur" != "`mhpath last`" ]; then folder next >/dev/null arith_eval $n + 1; n=$arith_val fi done } # check -messageid localname (the default) cat > "${MH_TEST_DIR}/Mail/draft" < To: Somebody Else Subject: Test This is a test . EOF cat > "${testname}.expected" < To: Somebody Else Subject: Test Date: Message-ID: This is a test . EOF test_messageid localname "${testname}.expected" # check -messageid random cat > "${MH_TEST_DIR}/Mail/draft" < To: Somebody Else Subject: Test This is a test . EOF cat > "${testname}.expected" < To: Somebody Else Subject: Test Date: Message-ID: This is a test . EOF test_messageid random "${testname}.expected" rm -f ${MHMTSCONF} exit ${failed:-0}