#!/bin/sh
######################################################
#
# Test mhparam
#
######################################################


. "$MH_TEST_COMMON"


# check -help
runandcheck "mhparam -help" <<!
Usage: mhparam [profile-components] [switches]
  switches are:
  -[no]components
  -all
  -Version
  -help
!


# check -version
case `mhparam -V` in
  mhparam\ --*) ;;
  *           ) echo "$0: mhparam -v generated unexpected output" 1>&2
                failed=`expr ${failed:-0} + 1`;;
esac

# check unknown option
runandcheck 'mhparam -nonexistent' <<!
mhparam: -nonexistent unknown
!

# check -all
cp "$MMH/profile" "$MMH/profile2"

MMHP="$MMH/profile2"
export MMHP

# -all adds current folder
runandcheck "mhparam -all" <<!
Path: $MH_TEST_DIR/Mail
Inbox: +inbox
Current-Folder: inbox
!


# check -all with a component
runandcheck "mhparam -all path >/dev/null" <<!
mhparam: profile-components ignored with -all
!

# check -all with -components
runandcheck "mhparam -all -components >/dev/null" <<!
mhparam: -components ignored with -all
!

# check one component
runandcheck 'mhparam path' <<!
$MH_TEST_DIR/Mail
!

# check more than one component, which enables -component
echo 'AliasFile: aliases' >>"$MMHP"
runandcheck 'mhparam path AliasFile' <<!
path: $MH_TEST_DIR/Mail
AliasFile: aliases
!


#### This exits with non-zero status, so let runandcheck squash that:
runandcheck 'mhparam formatproc rmmproc' <<!
!


# check -component
runandcheck 'mhparam -component Path' <<!
Path: $MH_TEST_DIR/Mail
!

# check -component, note that component name of argument is echoed exactly
runandcheck 'mhparam -component path' <<!
path: $MH_TEST_DIR/Mail
!
runandcheck 'mhparam -component PATH' <<!
PATH: $MH_TEST_DIR/Mail
!

# check -nocomponent
runandcheck 'mhparam -component -nocomponent path' <<!
$MH_TEST_DIR/Mail
!
runandcheck 'mhparam -nocomponent path AliasFile' <<!
$MH_TEST_DIR/Mail
aliases
!


# check nonexistent component
runandcheck 'mhparam nonexistent' <<!
!


# check that return status counts nonexistent components
runandcheck "mhparam path context nonexistent1 nonexistent2 \
		nonexistent3 >/dev/null; echo \$?" <<!
3
!
# check that return status counts nonexistent components
runandcheck "mhparam path context nonexistent1 nonexistent2 \
		nonexistent3 inbox >/dev/null; echo \$?" <<!
3
!

# mhparam -debug
# Some of its output depends on configure options, so don't bother to
# check for correctness here.
runandcheck "mhparam -debug >/dev/null; echo \$?" <<!
0
!

# check with folded header
cat >>"$MMHP" <<!
Alternate-Mailboxes: alice@example.org,
  bob@example.net,
	charly@example.comp
!
runandcheck 'mhparam alternate-mailboxes' <<!
alice@example.org,   bob@example.net,  charly@example.comp
!


# check with text file that does not end with newline
# in mmh this is invalid
printf 'Editor: emacs' >>"$MMHP"
export VISUAL=ed
runandcheck 'mhparam -nocomponent editor' <<!
mhparam: `cat test-temp-dir`/.mmh/profile2 is poorly formatted
$VISUAL
!
unset VISUAL


exit

# FIXME: needs to be adjusted or removed ...

# check 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.

runandcheck "mhparam -nocomponent \
		context \
		mh-sequences \
		buildmimeproc \
		fileproc \
		foldprot \
		incproc \
		lproc \
		mailproc \
		mhlproc \
		moreproc \
		msgprot \
		packproc \
		postproc \
		sendproc \
		showmimeproc \
		showproc \
		version \
		whatnowproc \
		whomproc \
		etcdir \
		libexecdir \
		datalocking \
		spoollocking" <<!
context
.mh_sequences
$MH_INST_DIR$bindir/mhbuild
$MH_INST_DIR$bindir/refile
700
$bindir/inc
more
$MH_INST_DIR$bindir/mhmail
$MH_INST_DIR$nmhlibexecdir/mhl
cat
600
$bindir/packf
$MH_INST_DIR$nmhlibexecdir/post
$MH_INST_DIR$bindir/send
$MH_INST_DIR$bindir/mhshow
$MH_INST_DIR$nmhlibexecdir/mhl
nmh-`cat ${srcdir}/VERSION`
$MH_INST_DIR$bindir/whatnow
$MH_INST_DIR$bindir/whom
$nmhetcdirinst
$MH_LIBEXEC_DIR
fcntl
${default_locking}
!

