mhn_defaults="$MH_INST_DIR${nmhetcdir}/mhn.defaults"
-if grep mhfixmsg-format-text/html "${mhn_defaults}" \
- >/dev/null; then
+if grep mhfixmsg-format-text/html "${mhn_defaults}" >/dev/null; then
can_reformat_texthtml=1
if grep 'mhfixmsg-format-text/html.*w3m' "${mhn_defaults}" \
>/dev/null; then
check "$expected" "$actual"
-# check rmmproc
-start_test "rmmproc"
-cat >"$MH_TEST_DIR/Mail/rmmproc" <<'EOF'
+if [ $can_reformat_texthtml -eq 1 ]; then
+ # check rmmproc
+ start_test "rmmproc"
+ cat >"$MH_TEST_DIR/Mail/rmmproc" <<'EOF'
mv "$1" "$1.backup"
EOF
-chmod a+x "${MH_TEST_DIR}/Mail/rmmproc"
-echo "rmmproc: ${MH_TEST_DIR}/Mail/rmmproc" >>"$MH"
-cp "${MH_TEST_DIR}/Mail/inbox/16" "${MH_TEST_DIR}/Mail/inbox/16.original"
+ chmod a+x "${MH_TEST_DIR}/Mail/rmmproc"
+ echo "rmmproc: ${MH_TEST_DIR}/Mail/rmmproc" >>"$MH"
+ cp "${MH_TEST_DIR}/Mail/inbox/16" "${MH_TEST_DIR}/Mail/inbox/16.original"
-run_test 'mhfixmsg 16' ''
-check "${MH_TEST_DIR}/Mail/inbox/16.backup" \
- "${MH_TEST_DIR}/Mail/inbox/16.original"
+ run_test 'mhfixmsg 16' ''
+ check "${MH_TEST_DIR}/Mail/inbox/16.backup" \
+ "${MH_TEST_DIR}/Mail/inbox/16.original"
-# check -normmproc
-start_test "-normmproc"
-cp "${MH_TEST_DIR}/Mail/inbox/21" "${MH_TEST_DIR}/Mail/inbox/22"
+ # check -normmproc
+ start_test "-normmproc"
+ cp "${MH_TEST_DIR}/Mail/inbox/21" "${MH_TEST_DIR}/Mail/inbox/22"
-run_test 'mhfixmsg 21 -normmproc'
-check "${MH_TEST_DIR}/Mail/inbox/22" \
- "${MH_TEST_DIR}/Mail/inbox/,21" 'keep first'
+ run_test 'mhfixmsg 21 -normmproc'
+ check "${MH_TEST_DIR}/Mail/inbox/22" \
+ "${MH_TEST_DIR}/Mail/inbox/,21" 'keep first'
+fi
# check -rmmproc
expected=$MH_TEST_DIR/$$.expected
actual=$MH_TEST_DIR/$$.actual
+mhn_defaults="$MH_INST_DIR${nmhetcdir}/mhn.defaults"
+
+if grep mhfixmsg-format-text/html "${mhn_defaults}" >/dev/null; then
+ can_reformat_texthtml=1
+ if grep 'mhfixmsg-format-text/html.*w3m' "${mhn_defaults}" \
+ >/dev/null; then
+ #### w3m uses $HOME/.w3m/, and creates it if it doesn't exist. To
+ #### support testing with non-writeable $HOME, and to not leave
+ #### relics from this test if it is writeable but doesn't already
+ #### have a .w3m, and to not depend on whatever is in that if it
+ #### does already exist, overwrite $HOME if using w3m.
+ HOME="$MHTMPDIR"; export HOME
+ fi
+else
+ echo "$0: skipping html checks because no text browser was found"
+ can_reformat_texthtml=0
+fi
+
# Write message with a text/plain subpart.
msgfile=`mhpath new`
msgnum=`basename $msgfile`
EOF
# check it
+start_test 'text/plain part'
run_prog mhshow -part 1.1 -form mhl.null $msgnum > $actual 2>&1
check "$expected" "$actual" : part 1.1
EOF
# Write the expected output.
-cat > $expected <<EOF
+if [ $can_reformat_texthtml -eq 1 ]; then
+ cat > $expected <<EOF
[ Message inbox:11 ]
[ part 1.1.1 - text/html - 111B ]
This is the text/html body part.
EOF
-# check it
-# The sed command removes blank lines and leading space that lynx inserts.
-run_prog mhshow -part 1.1.1 -form mhl.null $msgnum |
- sed '/^$/D; s/^ *//;' > $actual 2>&1
-check "$expected" "$actual" : part 1.1.1
+ # check it
+ start_test 'text/html part'
+ # The sed command removes blank lines and leading space that lynx inserts.
+ run_prog mhshow -part 1.1.1 -form mhl.null $msgnum |
+ sed '/^$/D; s/^ *//;' > $actual 2>&1
+ check "$expected" "$actual" : part 1.1.1
+fi
# Write the expected output.
cat > $expected <<EOF
EOF
# check it
+start_test 'text/plain alternative part'
run_prog mhshow -part 1.2 -form mhl.null $msgnum > $actual 2>&1
check "$expected" "$actual" : part 1.2
EOF
# check it
+start_test 'conflicting text/plain, part 1 switches'
run_prog mhshow -prefer text/plain -part 1 -form mhl.null $msgnum > $actual 2>&1
check "$expected" "$actual" : part conflicting text/plain, part 1 switches
EOF
# check it
+start_test 'final text/plain part'
run_prog mhshow -part 2 -form mhl.null $msgnum > $actual 2>&1
check "$expected" "$actual" : part 2
EOF
# check it
+start_test 'all text/plain parts'
run_prog mhshow -type text/plain -form mhl.null $msgnum > $actual 2>&1
check "$expected" "$actual" : type text/plain
This is the final text/plain signature part.
EOF
+start_test 'prefer text/plain'
run_prog mhshow -prefer text/plain -form mhl.null $msgnum > $actual 2>&1
check "$expected" "$actual" : prefer text/plain
+
+finish_test
exit $failed