X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/f0bcd0b87a07dbe86db190f554a77fd89f4823d8..8ebc62f6abc9ea23a324fe51fadad2467ecddc6d:/test/bad-input/test-header?ds=sidebyside diff --git a/test/bad-input/test-header b/test/bad-input/test-header index 98e8c7a4..eeacc831 100755 --- a/test/bad-input/test-header +++ b/test/bad-input/test-header @@ -1,26 +1,29 @@ #!/bin/sh ###################################################### # -# Test bogus headers (no blank line before body). +# 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 + 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 -actual=$MH_TEST_DIR/$$.actual +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=$(mhpath new) -msgnum=$(basename $msgfile) -cat > $msgfile <"$msgfile" < $expected <"$expected" < $actual 2>&1 -check $expected $actual +run_prog scan -width 80 last > "$actual" 2>&1 +check "$expected" "$actual" : scan with bogus header field # check show (mhl) -cat > $expected <"$expected" < $actual 2>&1 -check $expected $actual +run_prog show last > "$actual" 2>&1 +check "$expected" "$actual" : "show (mhl) with bogus header field" # check mhshow -cat > $expected <"$expected" < $actual 2>&1 -check $expected $actual +run_prog mhshow last > "$actual" 2>&1 +check "$expected" "$actual" : mhshow with bogus header field + +# check 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 +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 +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 + exit $failed