Use case statement to check for proper result from "mhparam sbackup".
[mmh] / test / mhparam / test-mhparam
1 #!/bin/sh
2 ######################################################
3 #
4 # Test mhparam
5 #
6 ######################################################
7
8 set -e
9
10 if test -z "${MH_OBJ_DIR}"; then
11     srcdir=`dirname $0`/../..
12     MH_OBJ_DIR=`cd $srcdir && pwd`; export MH_OBJ_DIR
13 fi
14
15 . "$MH_OBJ_DIR/test/common.sh"
16
17 setup_test
18
19 expected=$MH_TEST_DIR/$$.expected
20 expected_err=$MH_TEST_DIR/$$.expected_err
21 actual=$MH_TEST_DIR/$$.actual
22 actual_err=$MH_TEST_DIR/$$.actual_err
23
24
25 # check -help
26 cat >$expected <<EOF
27 Usage: mhparam [profile-components] [switches]
28   switches are:
29   -[no]components
30   -all
31   -version
32   -help
33 EOF
34 # The exit status is 1 with -help, so temporarily disable -e.
35 set +e
36 mhparam -help >$actual 2>&1
37 set -e
38 check $expected $actual
39
40 # check -version, which returns non-zero exit status
41 set +e
42 case `mhparam -v` in
43   mhparam\ --*) ;;
44   *           ) echo "$0: mhparam -v generated unexpected output" 1>&2
45                 failed=`expr ${failed:-0} + 1`;;
46 esac
47 set -e
48
49 # check unknown option
50 run_test 'mhparam -nonexistent' 'mhparam: -nonexistent unknown'
51
52 # check -all
53 cp $MH_TEST_DIR/Mail/.mh_profile $expected
54 # -all adds current folder
55 echo 'Current-Folder: '`folder -f` >>$expected
56 mhparam -all >$actual
57 check $expected $actual 'keep first'
58
59 # check -all with a component
60 echo 'mhparam: profile-components ignored with -all' >$expected_err
61 mhparam -all path >$actual 2>$actual_err
62 check $expected $actual 'keep first'
63 check $expected_err $actual_err
64
65 # check -all with -components
66 echo 'mhparam: -components ignored with -all' >$expected_err
67 mhparam -all -components >$actual 2>$actual_err
68 check $expected $actual
69 check $expected_err $actual_err
70
71 # check one component
72 run_test 'mhparam path' "$MH_TEST_DIR/Mail"
73
74 # check more than one component, which enables -component
75 echo 'AliasFile: aliases' >>"$MH_TEST_DIR/Mail/.mh_profile"
76 run_test 'mhparam path AliasFile' "path: $MH_TEST_DIR/Mail
77 AliasFile: aliases"
78
79 # check each component in procs array in uip/mhparam.c
80 # The tests don't override these, so they're default or configured values.
81 cat >$expected <<EOF
82 context
83 .mh_sequences
84 $bindir/mhbuild
85 $MH_INST_DIR$bindir/refile
86 700
87 $bindir/inc
88 $auxexecdir/install-mh
89 $pagerpath
90 $bindir/mhmail
91 $MH_INST_DIR$auxexecdir/mhl
92 $pagerpath
93 600
94 $bindir/msh
95 $bindir/packf
96 $MH_INST_DIR$auxexecdir/post
97 $bindir/send
98 $bindir/mhshow
99 $MH_INST_DIR$auxexecdir/mhl
100 nmh-`cat ${srcdir}/VERSION`
101 $bindir/msh
102 $bindir/whatnow
103 $bindir/whom
104 $sysconfdir
105 $auxexecdir
106 EOF
107
108 mhparam -nocomponent \
109 context \
110 mh-sequences \
111 buildmimeproc \
112 fileproc \
113 foldprot \
114 incproc \
115 installproc \
116 lproc \
117 mailproc \
118 mhlproc \
119 moreproc \
120 msgprot \
121 mshproc \
122 packproc \
123 postproc \
124 sendproc \
125 showmimeproc \
126 showproc \
127 version \
128 vmhproc \
129 whatnowproc \
130 whomproc \
131 etcdir \
132 libdir >$actual 2>&1
133
134 check $expected $actual
135
136 #### This exits with non-zero status, so let run_test squash that:
137 run_test 'mhparam faceproc formatproc rmmproc' ''
138
139 #### Test sbackup separately because it's only passed as a -D compile option.
140 case `mhparam sbackup` in
141   ,|\#) ;;
142   *   ) echo mhparam sbackup failed
143         failed=`expr ${failed:-0} + 1` ;;
144 esac
145
146 # check -component
147 run_test 'mhparam -component Path' "Path: $MH_TEST_DIR/Mail"
148
149 # check -component, note that component name of argument is echoed exactly
150 run_test 'mhparam -component path' "path: $MH_TEST_DIR/Mail"
151 run_test 'mhparam -component PATH' "PATH: $MH_TEST_DIR/Mail"
152
153 # check -nocomponent
154 run_test 'mhparam -component -nocomponent path' "$MH_TEST_DIR/Mail"
155 run_test 'mhparam -nocomponent path AliasFile' "$MH_TEST_DIR/Mail
156 aliases"
157
158 # check nonexistent component
159 run_test 'mhparam nonexistent' ''
160
161 # check that return status counts nonexistent components
162 set +e
163 mhparam path context nonexistent1 nonexistent2 nonexistent3 >/dev/null
164 run_test "echo $?" 3
165 set -e
166
167 # mhparam -debug (undocumented)
168 # Some of its output depends on configure options, so don't bother to
169 # check for correctness here.
170 mhparam -debug >/dev/null
171
172 exit $failed