]> diplodocus.org Git - nmh/blob - test/format/test-fmtdump
Document the -port flag. Text copied from inc.man .
[nmh] / test / format / test-fmtdump
1 #!/bin/sh
2 ######################################################
3 #
4 # Test fmtdump
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 # Use proper program, likely not the first one on PATH.
20 fmtdump="${MH_LIBEXEC_DIR}/fmtdump"
21
22 check_exit '-eq 1' "$fmtdump" -
23 check_exit '-eq 1' "$fmtdump" -form
24 check_exit '-eq 1' "$fmtdump" -format
25 check_exit '-eq 1' "$fmtdump" foo bar
26 check_exit '-eq 0' "$fmtdump" -format '
27 %4{} %(eq) %(getenv) %(decodecomp{}) %(trim{}) %(putaddr)
28 %(putlit) %(zputlit) %(compval{}) %(num)
29 %(plus) %(minus) %(multiply) %(divide) %(modulo)
30 %(charleft) %(kilo) %(kibi)
31 %(month{}) %(tzone{}) %(day{}) %(weekday{}) %(tws{}) %(pretty{})
32 %(sec{}) %(min{}) %(hour{}) %(year{}) %(yday{}) %(wday{})
33 %(clock{}) %(rclock{}) %(sday{}) %(dst{}) %(szone{})
34 %(date2local{}) %(date2gmt{})
35 '
36 check_exit '-eq 0' "$fmtdump" -format '
37 %(addr{}) %(pers{}) %(mbox{}) %(host{}) %(path{}) %(gname{})
38 %(note{}) %(proper{}) %(type{}) %(ingrp{}) %(nohost{})
39 %(formataddr) %(concataddr) %(getmymbox{}) %(getmyaddr{})
40 %<(null)%> %<(gt)%> %<(match)%> %<(amatch)%>
41 %(null) %(nonnull) %(ne) %(gt) %(match) %(amatch)
42 '
43 check_exit '-eq 0' "$fmtdump" -format "`printf '\302\010\014\015\011\177'`"
44
45 expected=$MH_TEST_DIR/$$.expected
46 expected_err=$MH_TEST_DIR/$$.expected_err
47 actual=$MH_TEST_DIR/$$.actual
48 actual_err=$MH_TEST_DIR/$$.actual_err
49
50
51 # check -help
52 start_test "-help"
53 cat >$expected <<EOF
54 Usage: fmtdump [switches]
55 switches are:
56 -form formatfile
57 -(forma)t string
58 -version
59 -help
60 EOF
61
62 #### Skip nmh intro text.
63 "$fmtdump" -help 2>&1 | sed '/^$/,$d' >"$actual"
64 check "$expected" "$actual"
65
66 # check -version
67 start_test "-version"
68 case `$fmtdump -v` in
69 fmtdump\ --*) ;;
70 * ) printf '%s: fmtdump -v generated unexpected output\n' "$0" >&2
71 failed=`expr ${failed:-0} + 1`;;
72 esac
73
74 # check unknown switch
75 start_test "unknown switch"
76 run_test "$fmtdump -nonexistent" 'fmtdump: -nonexistent unknown'
77
78 # check with no switches
79 start_test "with no switches"
80 cat >$expected <<EOF
81 LV_DAT, value dat[0]
82 NUMF, width 4, fill ' '
83 LV_DAT, value dat[1]
84 IF_V_NE 0 continue else goto L0
85 CHAR '+'
86 GOTO L1
87 L0: CHAR ' '
88 L1: LS_COMP, comp "replied"
89 IF_S continue else goto L2
90 CHAR '-'
91 GOTO L3
92 L2: CHAR ' '
93 L3: PARSEDATE, c_name "date", c_type <DATE>
94 LV_MON, c_name "date", c_type <DATE>
95 NUMF, width 2, fill '0'
96 CHAR '/'
97 PARSEDATE, c_name "date", c_type <DATE>
98 LV_MDAY, c_name "date", c_type <DATE>
99 NUMF, width 2, fill '0'
100 LS_COMP, comp "date", c_type <DATE>
101 IF_S continue else goto L4
102 CHAR ' '
103 GOTO L5
104 L4: CHAR '*'
105 L5: MYMBOX, c_name "from", c_type <ADDR>
106 LV_COMPFLAG, comp "from", c_type <ADDR>
107 IF_V_NE 0 continue else goto L6
108 LS_COMP, comp "to", c_type <ADDR>
109 IF_S continue else goto L6
110 LIT "To:"
111 PARSEADDR, c_name "to", c_type <ADDR>
112 LS_FRIENDLY, c_name "to", c_type <ADDR>
113 LS_DECODE
114 STRF, width 14, fill ' '
115 L6: IF_V_EQ 0 continue else goto L7
116 PARSEADDR, c_name "from", c_type <ADDR>
117 LS_FRIENDLY, c_name "from", c_type <ADDR>
118 LS_DECODE
119 STRF, width 17, fill ' '
120 L7: LIT " "
121 LS_COMP, comp "subject"
122 LS_DECODE
123 STR
124 LS_COMP, comp "body"
125 IF_S continue else goto L8
126 LIT "<<"
127 COMP, comp "body"
128 LIT ">>"
129 L8: CHAR '\n'
130 DONE
131 EOF
132
133 run_prog $fmtdump >$actual 2>&1
134 check $expected $actual
135
136 # check -form
137 start_test "-form"
138 cat >$expected <<EOF
139 LV_DAT, value dat[0]
140 NUMF, width 4, fill ' '
141 LV_DAT, value dat[1]
142 IF_V_NE 0 continue else goto L0
143 CHAR '+'
144 GOTO L1
145 L0: CHAR ' '
146 L1: LS_COMP, comp "replied"
147 IF_S continue else goto L2
148 CHAR '-'
149 GOTO L3
150 L2: CHAR ' '
151 L3: PARSEDATE, c_name "date", c_type <DATE>
152 LV_MON, c_name "date", c_type <DATE>
153 NUMF, width 2, fill '0'
154 CHAR '/'
155 PARSEDATE, c_name "date", c_type <DATE>
156 LV_MDAY, c_name "date", c_type <DATE>
157 NUMF, width 2, fill '0'
158 LS_COMP, comp "date", c_type <DATE>
159 IF_S continue else goto L4
160 CHAR ' '
161 GOTO L5
162 L4: CHAR '*'
163 L5: MYMBOX, c_name "from", c_type <ADDR>
164 LV_COMPFLAG, comp "from", c_type <ADDR>
165 IF_V_NE 0 continue else goto L6
166 LS_COMP, comp "to", c_type <ADDR>
167 IF_S continue else goto L6
168 LIT "To:"
169 PARSEADDR, c_name "to", c_type <ADDR>
170 LS_FRIENDLY, c_name "to", c_type <ADDR>
171 LS_DECODE
172 LS_UNQUOTE
173 STRF, width 14, fill ' '
174 L6: IF_V_EQ 0 continue else goto L7
175 PARSEADDR, c_name "from", c_type <ADDR>
176 LS_FRIENDLY, c_name "from", c_type <ADDR>
177 LS_DECODE
178 LS_UNQUOTE
179 STRF, width 17, fill ' '
180 L7: LIT " "
181 LS_COMP, comp "subject"
182 LS_DECODE
183 STR
184 LS_COMP, comp "body"
185 IF_S continue else goto L8
186 LIT "<<"
187 COMP, comp "body"
188 LIT ">>"
189 L8: CHAR '\n'
190 DONE
191 EOF
192
193 run_prog $fmtdump -form "$MH_INST_DIR${nmhetcdir}/scan.default" >$actual 2>&1
194 check $expected $actual
195
196 # check -format
197 start_test "-format"
198 cat >$expected <<EOF
199 LS_LIT str "1234567890"
200 IF_S continue else goto L0
201 LV_STRLEN
202 NUM
203 L0: DONE
204 EOF
205
206 run_prog $fmtdump -format '%<(lit 1234567890)%(strlen)%>' >$actual 2>&1
207 check $expected $actual
208
209
210 finish_test
211 exit ${failed:-0}