#!/bin/sh ###################################################### # # Test bogus headers (no blank line before body, etc.) # ###################################################### 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 expected="$MH_TEST_DIR/$$.expected" expected_err="$MH_TEST_DIR/$$.expected_err" actual="$MH_TEST_DIR/$$.actual" actual_err="$MH_TEST_DIR/$$.actual_err" # Write message with bogus header field (missing blank line, really). msgfile="$MH_TEST_DIR/Mail/inbox/11" cat >"$msgfile" <"$expected" < "$actual" 2>&1 check "$expected" "$actual" : scan with bogus header field # check show (mhl) start_test show cat >"$expected" < "$actual" 2>&1 check "$expected" "$actual" : "show (mhl) with bogus header field" # check mhshow start_test mhshow cat >"$expected" < "$actual" 2>&1 check "$expected" "$actual" : mhshow with bogus header field # check m_getfld() handling of empty header field start_test 'm_getfld() handling of empty header field' msgfile="$MH_TEST_DIR/Mail/inbox/12" printf 'Date: Sat, 12 Jan 2013 09:07:01 -0600\nReceived:' >"$msgfile" cat >"$expected" <"$expected_err" <"$actual" 2>"$actual_err" check "$expected" "$actual" : m_getfld, empty header output check "$expected_err" "$actual_err" : m_getfld, empty header error # check m_getfld() handling of excessively long header field name start_test 'm_getfld() handling of excessively long header field name' msgfile="$MH_TEST_DIR/Mail/inbox/13" cat >"$msgfile" <"$expected" <"$actual" 2>"$actual_err" check "$expected" "$actual" : m_getfld with excessively long header field name # Cygwin has a BUFSIZ of 1024 so the error message gets truncated. # Deal with that by grepping to verify that scan showed the proper error. verify_string_in_file() { if grep "$1" "$2" >/dev/null; then : else echo "$0: did not receive expected error message \"$1\"" failed=`expr ${failed:-0} + 1` fi } verify_string_in_file 'scan: field name "ThisHeaderFieldNameIsWa' "$actual_err" verify_string_in_file 'exceeds 997' "$actual_err" verify_string_in_file '??Format error (message 13) in component 2' "$actual_err" rm -f "$actual_err" # check m_getfld() handling of long header field name without a colon start_test 'm_getfld() handling of long header field name without a colon' msgfile="$MH_TEST_DIR/Mail/inbox/14" cat >"$msgfile" <"$expected" <"$expected_err" <"$actual" 2>"$actual_err" check "$expected" "$actual" : m_getfld with long header, no colon output check "$expected_err" "$actual_err" : m_getfld with long header, no colon error finish_test exit $failed