]> diplodocus.org Git - nmh/blob - test/anno/test-anno
Alter mh-chart(7)'s NAME to be lowercase.
[nmh] / test / anno / test-anno
1 #!/bin/sh
2 ######################################################
3 #
4 # Test anno
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 check_exit '-eq 1' anno -
20 check_exit '-eq 1' anno -comp
21 check_exit '-eq 1' anno -comp foo -comp bar
22 check_exit '-eq 1' anno -text
23 check_exit '-eq 1' anno -text foo -text bar
24 check_exit '-eq 1' anno -number 0
25 check_exit '-eq 1' anno -number -number
26 check_exit '-eq 1' anno + @
27 check_exit '-eq 1' anno -draft 42
28 check_exit '-eq 1' anno -draft -list </dev/null
29 check_exit '-eq 1' anno -draft -list -comp foo
30 check_exit '-eq 1' anno -draft -comp f.o:
31 check_exit '-eq 1' anno -draft -comp ''
32 x=tendixzehn
33 l=$x$x$x$x$x
34 c=$l$l
35 d=$c$c$c$c$c
36 check_exit '-eq 1' anno -draft -comp $d$c$c$c$c$l$x$x$x${x}123456789
37
38 expected=$MH_TEST_DIR/$$.expected
39 expected_err=$MH_TEST_DIR/$$.expected_err
40 actual=$MH_TEST_DIR/$$.actual
41 actual_err=$MH_TEST_DIR/$$.actual_err
42
43 # check -help
44 cat >"$expected" <<EOF
45 Usage: anno [+folder] [msgs] [switches]
46 switches are:
47 -component field
48 -[no]inplace
49 -[no]date
50 -text body
51 -version
52 -help
53 -(dr)aft
54 -(l)ist
55 -(de)lete
56 -(nu)mber
57 -(a)ppend
58 -([no]p)reserve
59 EOF
60
61 #### Skip nmh intro text.
62 run_prog anno -help | sed '/^$/,$d' >"$actual" 2>&1
63 check "$expected" "$actual"
64
65 # check -version
66 case `anno -v` in
67 anno\ --*) ;;
68 * ) printf '%s: anno -v generated unexpected output\n' "$0" >&2
69 failed=`expr ${failed:-0} + 1`;;
70 esac
71
72 # check unknown switch
73 run_test "anno -nonexistent" 'anno: -nonexistent unknown'
74
75 cat "${MH_TEST_DIR}/Mail/inbox/1" >"${MH_TEST_DIR}/Mail/inbox/11"
76
77 # check with no switches
78 printf 'Nmh-test:\n' >"$expected"
79 cat "${MH_TEST_DIR}/Mail/inbox/1" >>"$expected"
80 folder -fast 1 >/dev/null
81
82 printf 'Nmh-test' | run_prog anno >/dev/null
83 sed -e 's/^Nmh-test:.*/Nmh-test:/' "${MH_TEST_DIR}/Mail/inbox/1" >"$actual"
84 check "$expected" "$actual" 'keep first'
85 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
86
87 # check -component
88 run_prog anno -component Nmh-test
89 sed -e 's/^Nmh-test:.*/Nmh-test:/' "${MH_TEST_DIR}/Mail/inbox/1" >"$actual"
90 check "$expected" "$actual" 'keep first'
91 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
92
93 # check +folder
94 run_prog anno -component Nmh-test +inbox
95 sed -e 's/^Nmh-test:.*/Nmh-test:/' "${MH_TEST_DIR}/Mail/inbox/1" >"$actual"
96 check "$expected" "$actual" 'keep first'
97 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
98
99 # check msg
100 folder -fast 2 >/dev/null
101 run_prog anno 1 -component Nmh-test
102 sed -e 's/^Nmh-test:.*/Nmh-test:/' "${MH_TEST_DIR}/Mail/inbox/1" >"$actual"
103 check "$expected" "$actual" 'keep first'
104 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
105
106 check_for_hard_links
107 if [ $hard_links_supported -eq 1 ]; then
108 # check -noinplace
109 # Hard link the message and verify that the new one doesn't get annotated.
110 cp "${MH_TEST_DIR}/Mail/inbox/8" "${MH_TEST_DIR}/Mail/inbox/8.copy"
111 ln "${MH_TEST_DIR}/Mail/inbox/8" "${MH_TEST_DIR}/Mail/inbox/8.link"
112 run_prog anno 8 -component Nmh-test -noinplace
113 mv -f "${MH_TEST_DIR}/Mail/inbox/8.copy" "${MH_TEST_DIR}/Mail/inbox/8"
114 check "${MH_TEST_DIR}/Mail/inbox/8" "${MH_TEST_DIR}/Mail/inbox/8.link" \
115 'keep first'
116
117 # check -inplace
118 # Hard link the message and verify that the new one does get annotated.
119 ln "${MH_TEST_DIR}/Mail/inbox/8" "${MH_TEST_DIR}/Mail/inbox/8.link"
120 run_prog anno 8 -component Nmh-test -noinplace -inplace
121 check "${MH_TEST_DIR}/Mail/inbox/8" "${MH_TEST_DIR}/Mail/inbox/8.link"
122 fi
123
124 # check -nodate. Without -text, it doesn't change the message.
125 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "$expected-nodate"
126 run_prog anno 1 -component Nmh-test -nodate
127 cp -f "${MH_TEST_DIR}/Mail/inbox/1" "$actual"
128 check "$expected-nodate" "$actual"
129 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
130
131 # check -date
132 run_prog anno 1 -component Nmh-test -nodate -date
133 sed -e 's/^Nmh-test:.*/Nmh-test:/' "${MH_TEST_DIR}/Mail/inbox/1" >"$actual"
134 check "$expected" "$actual" 'keep first'
135 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
136
137 # check -draft.
138 cp -f "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/draft"
139 run_prog anno -draft -component Nmh-test
140 sed -e 's/^Nmh-test:.*/Nmh-test:/' "${MH_TEST_DIR}/Mail/draft" >"$actual"
141 check "$expected" "$actual"
142 rm "${MH_TEST_DIR}/Mail/draft"
143
144 # check -append
145 sed -e 's/\(Subject: Testing message 1\)/\1\
146 Nmh-test:/' <"${MH_TEST_DIR}/Mail/inbox/1" >"$expected"
147 run_prog anno 1 -component Nmh-test -append
148 sed -e 's/^Nmh-test:.*/Nmh-test:/' "${MH_TEST_DIR}/Mail/inbox/1" >"$actual"
149 check "$expected" "$actual"
150 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
151
152 # check -list
153 printf 'Nmh-test: test of anno -list\n' >"$expected"
154 cat "${MH_TEST_DIR}/Mail/inbox/1" >>"$expected"
155 run_prog anno 1 -component Nmh-test -nodate -text 'test of anno -list'
156 run_test 'anno 1 -component Nmh-test -list' 'test of anno -list'
157 # check -text
158 check "$expected" "${MH_TEST_DIR}/Mail/inbox/1"
159 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
160
161 # check -list -number
162 printf 'Nmh-test: test of anno -list -number\n' >"$expected"
163 cat "${MH_TEST_DIR}/Mail/inbox/1" >>"$expected"
164 run_prog anno 1 -component Nmh-test -nodate -text 'test of anno -list -number'
165 run_test 'anno 1 -component Nmh-test -list -number' \
166 '1 test of anno -list -number'
167 check "$expected" "${MH_TEST_DIR}/Mail/inbox/1"
168 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
169
170 # check -delete
171 cp "${MH_TEST_DIR}/Mail/inbox/1" "$expected"
172 run_prog anno 1 -component Nmh-test
173 run_prog anno 1 -component Nmh-test -delete
174 sed -e 's/^Nmh-test:.*/Nmh-test:/' "${MH_TEST_DIR}/Mail/inbox/1" >"$actual"
175 check "$expected" "$actual"
176 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
177
178 # check -delete -number
179 printf 'Nmh-test: 1\nNmh-test: 3\n' >"$expected"
180 cat "${MH_TEST_DIR}/Mail/inbox/1" >>"$expected"
181 run_prog anno 1 -component Nmh-test -nodate -text 3
182 run_prog anno 1 -component Nmh-test -nodate -text 2
183 run_prog anno 1 -component Nmh-test -nodate -text 1
184 run_prog anno 1 -component Nmh-test -delete -number 2
185 cp -f "${MH_TEST_DIR}/Mail/inbox/1" "$actual"
186 check "$expected" "$actual"
187 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
188
189 # check -delete -all
190 cp "${MH_TEST_DIR}/Mail/inbox/1" "$expected"
191 run_prog anno 1 -component Nmh-test -nodate -text 3
192 run_prog anno 1 -component Nmh-test -nodate -text 2
193 run_prog anno 1 -component Nmh-test -nodate -text 1
194 run_prog anno 1 -component Nmh-test -delete -number all
195 cp -f "${MH_TEST_DIR}/Mail/inbox/1" "$actual"
196 check "$expected" "$actual"
197 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
198
199 # check -preserve
200 touch -t '201210010000.00' "${MH_TEST_DIR}/Mail/inbox/1"
201 ls -l "${MH_TEST_DIR}/Mail/inbox/1" >"$actual-ls1"
202 run_prog anno 1 -component Nmh-test -preserve
203 run_prog anno 1 -component Nmh-test -preserve -delete
204 ls -l "${MH_TEST_DIR}/Mail/inbox/1" >"$actual-ls2"
205 check "$actual-ls1" "$actual-ls2"
206 cp -f "${MH_TEST_DIR}/Mail/inbox/11" "${MH_TEST_DIR}/Mail/inbox/1"
207
208 # check -nopreserve
209 touch -t '2012100100.00' "${MH_TEST_DIR}/Mail/inbox/1"
210 ls -l "${MH_TEST_DIR}/Mail/inbox/1" >"$actual-ls1"
211 run_prog anno 1 -component Nmh-test -preserve -nopreserve
212 run_prog anno 1 -component Nmh-test -preserve -nopreserve -delete
213 ls -l "${MH_TEST_DIR}/Mail/inbox/1" >"$actual-ls2"
214 set +e
215 diff "$actual-ls1" "$actual-ls2" >/dev/null
216 run_test 'printf 1' "$?"
217 set -e
218 rm "$actual-ls1" "$actual-ls2"
219
220
221 exit ${failed:-0}