setup_test
+check_exit '-eq 1' mhparam -
+check_exit '-eq 0' mhparam localmbox
+
expected=$MH_TEST_DIR/$$.expected
expected_err=$MH_TEST_DIR/$$.expected_err
actual=$MH_TEST_DIR/$$.actual
# check -help
+start_test "-help"
cat >$expected <<EOF
Usage: mhparam [profile-components] [switches]
switches are:
-all
-version
-help
+ -(debug)
EOF
-# The exit status is 1 with -help, so invert it to prevent
-# triggering immediate exit due to set -e.
-! mhparam -help >$actual 2>&1
-check $expected $actual
+
+#### Skip nmh intro text.
+mhparam -help | sed '/^$/,$d' >"$actual" 2>&1
+check "$expected" "$actual"
# check -version
-if ! mhparam -v | grep '^mhparam --' >/dev/null; then
- echo "$0: mhparam -v generated unexpected output" 1>&2
- failed=`expr ${failed:-0} + 1`
-fi
+start_test "-version"
+case `mhparam -v` in
+ mhparam\ --*) ;;
+ * ) echo "$0: mhparam -v generated unexpected output" 1>&2
+ failed=`expr ${failed:-0} + 1`;;
+esac
# check unknown option
+start_test "unknown option"
run_test 'mhparam -nonexistent' 'mhparam: -nonexistent unknown'
# check -all
-cp $MH_TEST_DIR/Mail/.mh_profile $expected
-# -all adds current folder
+start_test "-all"
+cp "$MH" $expected
+# -all adds current folder and Version
echo 'Current-Folder: '`folder -f` >>$expected
-mhparam -all >$actual
+echo "Version: nmh-$MH_VERSION" >>$expected
+run_prog mhparam -all >$actual
check $expected $actual 'keep first'
# check -all with a component
+start_test "-all with a component"
echo 'mhparam: profile-components ignored with -all' >$expected_err
-mhparam -all path >$actual 2>$actual_err
+run_prog mhparam -all path >$actual 2>$actual_err
check $expected $actual 'keep first'
check $expected_err $actual_err
# check -all with -components
+start_test "-all with -components"
echo 'mhparam: -components ignored with -all' >$expected_err
-mhparam -all -components >$actual 2>$actual_err
+run_prog mhparam -all -components >$actual 2>$actual_err
check $expected $actual
check $expected_err $actual_err
# check one component
+start_test "one component"
run_test 'mhparam path' "$MH_TEST_DIR/Mail"
# check more than one component, which enables -component
-echo 'AliasFile: aliases' >>"$MH_TEST_DIR/Mail/.mh_profile"
+start_test "more than one component, which enables -component"
+echo 'AliasFile: aliases' >>"$MH"
run_test 'mhparam path AliasFile' "path: $MH_TEST_DIR/Mail
AliasFile: aliases"
# check each component in procs array in uip/mhparam.c
+start_test "each component in procs array in uip/mhparam.c"
# The tests don't override these, so they're default or configured values.
+# Note that cat is hardcoded here because the testsuite uses it for moreproc.
cat >$expected <<EOF
context
.mh_sequences
-$bindir/mhbuild
+$MH_INST_DIR$bindir/mhbuild
$MH_INST_DIR$bindir/refile
700
$bindir/inc
-$auxexecdir/install-mh
-$pagerpath
-$bindir/mhmail
-$MH_INST_DIR$auxexecdir/mhl
-$pagerpath
+more
+$MH_INST_DIR$bindir/mhmail
+$MH_INST_DIR$nmhlibexecdir/mhl
+cat
600
-$bindir/msh
$bindir/packf
-$MH_INST_DIR$auxexecdir/post
-$bindir/send
-$bindir/mhshow
-$MH_INST_DIR$auxexecdir/mhl
-nmh-`cat $MH_OBJ_DIR/VERSION`
-$bindir/msh
-$bindir/whatnow
-$bindir/whom
-$sysconfdir
-$auxexecdir
-,
+$MH_INST_DIR$nmhlibexecdir/post
+$MH_INST_DIR$bindir/send
+$MH_INST_DIR$bindir/mhshow
+$MH_INST_DIR$nmhlibexecdir/mhl
+nmh-$MH_VERSION
+$MH_INST_DIR$bindir/whatnow
+$MH_INST_DIR$bindir/whom
+$nmhetcdirinst
+$MH_LIBEXEC_DIR
+fcntl
+${default_locking}
EOF
-mhparam -nocomponent \
+run_prog mhparam -nocomponent \
context \
mh-sequences \
buildmimeproc \
fileproc \
foldprot \
incproc \
-installproc \
lproc \
mailproc \
mhlproc \
moreproc \
msgprot \
-mshproc \
packproc \
postproc \
sendproc \
showmimeproc \
showproc \
version \
-vmhproc \
whatnowproc \
whomproc \
etcdir \
-libdir \
-sbackup >$actual 2>&1
+libexecdir \
+datalocking \
+spoollocking >$actual 2>&1
check $expected $actual
-#### These return status of 1, so let run_test squash that:
-run_test 'mhparam -nocomponent faceproc' ''
-run_test 'mhparam -nocomponent formatproc' ''
-run_test 'mhparam -nocomponent rmmproc' ''
+#### This exits with non-zero status, so let run_test squash that:
+run_test 'mhparam formatproc rmmproc' ''
+
+#### Test sbackup separately because it's only passed as a -D compile option.
+case `mhparam sbackup` in
+ ,|\#) ;;
+ * ) echo mhparam sbackup failed
+ failed=`expr ${failed:-0} + 1` ;;
+esac
# check -component
+start_test "-component"
run_test 'mhparam -component Path' "Path: $MH_TEST_DIR/Mail"
# check -component, note that component name of argument is echoed exactly
+start_test "-component, note that component name of argument is echoed exactly"
run_test 'mhparam -component path' "path: $MH_TEST_DIR/Mail"
run_test 'mhparam -component PATH' "PATH: $MH_TEST_DIR/Mail"
# check -nocomponent
+start_test "-nocomponent"
run_test 'mhparam -component -nocomponent path' "$MH_TEST_DIR/Mail"
run_test 'mhparam -nocomponent path AliasFile' "$MH_TEST_DIR/Mail
aliases"
# check nonexistent component
+start_test "nonexistent component"
run_test 'mhparam nonexistent' ''
# check that return status counts nonexistent components
+start_test "return status counts nonexistent components"
set +e
mhparam path context nonexistent1 nonexistent2 nonexistent3 >/dev/null
run_test "echo $?" 3
set -e
-# mhparam -debug (undocumented)
+# And clips their numbers to avoid a misleading exit value.
+start_test "clips their numbers to avoid a misleading exit value"
+while read use want; do
+ r=0
+ #### Heirloom shell can't handle the backquote expression as the
+ #### argument: with set -e, it exits immediately.
+ textlines=`yes nonexistent | sed ${use}q`
+ mhparam $textlines || r=$?
+ run_test "echo $r" $want
+done <<\E
+119 119
+120 120
+121 120
+E
+
+# mhparam -debug
+start_test "-debug"
# Some of its output depends on configure options, so don't bother to
# check for correctness here.
mhparam -debug >/dev/null
+# check with text file that does not end with newline
+start_test "with text file that does not end with newline"
+printf 'Editor: emacs' >>"$MH"
+run_test 'mhparam -nocomponent editor' 'emacs'
+
+
+finish_test
exit $failed