]> diplodocus.org Git - nmh/blob - test/folder/test-sortm
Added start_test/finish_test to a bunch of tests.
[nmh] / test / folder / test-sortm
1 #!/bin/sh
2 ######################################################
3 #
4 # Test sortm
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' sortm -
20
21 expected=$MH_TEST_DIR/$$.expected
22 actual=$MH_TEST_DIR/$$.actual
23
24 cd $MH_TEST_DIR
25
26 # check -help
27 start_test "-help"
28 cat >"$expected" <<EOF
29 Usage: sortm [+folder] [msgs] [switches]
30 switches are:
31 -datefield field
32 -textfield field
33 -notextfield
34 -limit days
35 -nolimit
36 -[no]verbose
37 -[no]all
38 -[no]check
39 -version
40 -help
41 EOF
42
43 #### Skip nmh intro text.
44 run_prog sortm -help 2>&1 | sed '/^$/,$d' >"$actual"
45 check "$expected" "$actual"
46
47 # check -version
48 start_test "-version"
49 case `sortm -version` in
50 sortm\ --*) ;;
51 * ) echo "$0: sortm -v generated unexpected output" 1>&2
52 failed=`expr ${failed:-0} + 1`;;
53 esac
54
55 cat >$MH_TEST_DIR/Mail/inbox/11 <<EOF || exit 1
56 From: Test11 <test11@example.com>
57 To: Some User <user@example.com>
58 Date: Fri, 29 Sep 2006 00:00:01
59 Alt-Date: Thu, 1 Sep 2005 00:00:00
60 Subject: Re: common subject
61
62 This is message number 11
63 EOF
64
65 cat >$MH_TEST_DIR/Mail/inbox/12 <<EOF || exit 1
66 From: Test12 <test12@example.com>
67 To: Some User <user@example.com>
68 Date: Thu, 28 Sep 2006 23:59:59
69 Alt-Date: Sat, 30 Sep 2006 00:00:00
70 Subject: common subject
71
72 This is message number 12
73 EOF
74
75 # check with no options
76 start_test "with no options"
77 cat >"$expected" <<EOF
78 1 09/28 Test12 common subject<<This is message number 12 >>
79 2 09/29 Test1 Testing message 1<<This is message number 1 >>
80 3 09/29 Test2 Testing message 2<<This is message number 2 >>
81 4 09/29 Test3 Testing message 3<<This is message number 3 >>
82 5 09/29 Test4 Testing message 4<<This is message number 4 >>
83 6 09/29 Test5 Testing message 5<<This is message number 5 >>
84 7 09/29 Test6 Testing message 6<<This is message number 6 >>
85 8 09/29 Test7 Testing message 7<<This is message number 7 >>
86 9 09/29 Test8 Testing message 8<<This is message number 8 >>
87 10 09/29 Test9 Testing message 9<<This is message number 9 >>
88 11 09/29 Test10 Testing message 10<<This is message number 10 >>
89 12 09/29 Test11 Re: common subject<<This is message number 11 >>
90 EOF
91
92 run_prog sortm
93 scan -width 80 >"$actual"
94 check "$expected" "$actual"
95
96 # check +folder
97 start_test "+folder"
98 cat >"$expected" <<EOF
99 1 09/28 Test12 common subject<<This is message number 12 >>
100 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
101 3 09/29 Test2 Testing message 2<<This is message number 2 >>
102 4 09/29 Test3 Testing message 3<<This is message number 3 >>
103 5 09/29 Test4 Testing message 4<<This is message number 4 >>
104 6 09/29 Test5 Testing message 5<<This is message number 5 >>
105 7 09/29 Test6 Testing message 6<<This is message number 6 >>
106 8 09/29 Test7 Testing message 7<<This is message number 7 >>
107 9 09/29 Test8 Testing message 8<<This is message number 8 >>
108 10 09/29 Test9 Testing message 9<<This is message number 9 >>
109 11 09/29 Test10 Testing message 10<<This is message number 10 >>
110 12 09/29 Test11 Re: common subject<<This is message number 11 >>
111 EOF
112
113 refile first +inbox; folder -pack >/dev/null
114 run_prog sortm +inbox
115 scan -width 80 >"$actual"
116 check "$expected" "$actual"
117
118 # check -verbose
119 start_test "-verbose"
120 cat >"$expected" <<EOF
121 sorting by datefield date
122 renaming message chain from 12 to 1
123 message 11 becomes message 12
124 message 10 becomes message 11
125 message 9 becomes message 10
126 message 8 becomes message 9
127 message 7 becomes message 8
128 message 6 becomes message 7
129 message 5 becomes message 6
130 message 4 becomes message 5
131 message 3 becomes message 4
132 message 2 becomes message 3
133 message 1 becomes message 2
134 1 09/28 Test12 common subject<<This is message number 12 >>
135 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
136 3 09/29 Test2 Testing message 2<<This is message number 2 >>
137 4 09/29 Test3 Testing message 3<<This is message number 3 >>
138 5 09/29 Test4 Testing message 4<<This is message number 4 >>
139 6 09/29 Test5 Testing message 5<<This is message number 5 >>
140 7 09/29 Test6 Testing message 6<<This is message number 6 >>
141 8 09/29 Test7 Testing message 7<<This is message number 7 >>
142 9 09/29 Test8 Testing message 8<<This is message number 8 >>
143 10 09/29 Test9 Testing message 9<<This is message number 9 >>
144 11 09/29 Test10 Testing message 10<<This is message number 10 >>
145 12 09/29 Test11 Re: common subject<<This is message number 11 >>
146 EOF
147
148 refile first +inbox; folder -pack >/dev/null
149 run_prog sortm -verbose >"$actual"
150 scan -width 80 >>"$actual"
151 check "$expected" "$actual"
152
153 # check -noverbose
154 start_test "-noverbose"
155 cat >"$expected" <<EOF
156 1 09/28 Test12 common subject<<This is message number 12 >>
157 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
158 3 09/29 Test2 Testing message 2<<This is message number 2 >>
159 4 09/29 Test3 Testing message 3<<This is message number 3 >>
160 5 09/29 Test4 Testing message 4<<This is message number 4 >>
161 6 09/29 Test5 Testing message 5<<This is message number 5 >>
162 7 09/29 Test6 Testing message 6<<This is message number 6 >>
163 8 09/29 Test7 Testing message 7<<This is message number 7 >>
164 9 09/29 Test8 Testing message 8<<This is message number 8 >>
165 10 09/29 Test9 Testing message 9<<This is message number 9 >>
166 11 09/29 Test10 Testing message 10<<This is message number 10 >>
167 12 09/29 Test11 Re: common subject<<This is message number 11 >>
168 EOF
169
170 refile first +inbox; folder -pack >/dev/null
171 run_prog sortm -verbose -noverbose >"$actual"
172 scan -width 80 >>"$actual"
173 check "$expected" "$actual"
174
175 # check msgs
176 start_test "msgs"
177 cat >"$expected" <<EOF
178 1 09/28 Test12 common subject<<This is message number 12 >>
179 2 09/29 Test2 Testing message 2<<This is message number 2 >>
180 3 09/29 Test3 Testing message 3<<This is message number 3 >>
181 4 09/29 Test4 Testing message 4<<This is message number 4 >>
182 5 09/29 Test5 Testing message 5<<This is message number 5 >>
183 6 09/29 Test6 Testing message 6<<This is message number 6 >>
184 7 09/29 Test7 Testing message 7<<This is message number 7 >>
185 8 09/29 Test8 Testing message 8<<This is message number 8 >>
186 9 09/29 Test9 Testing message 9<<This is message number 9 >>
187 10 09/29 Test10 Testing message 10<<This is message number 10 >>
188 11 09/29 Test11 Re: common subject<<This is message number 11 >>
189 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
190 EOF
191
192 refile first +inbox; folder -pack >/dev/null
193 run_prog sortm first last
194 scan -width 80 >"$actual"
195 check "$expected" "$actual"
196
197 # check -datefield
198 start_test "-datefield"
199 cat >"$expected" <<EOF
200 1 09/29 Test11 Re: common subject<<This is message number 11 >>
201 2 09/29 Test2 Testing message 2<<This is message number 2 >>
202 3 09/29 Test3 Testing message 3<<This is message number 3 >>
203 4 09/29 Test4 Testing message 4<<This is message number 4 >>
204 5 09/29 Test5 Testing message 5<<This is message number 5 >>
205 6 09/29 Test6 Testing message 6<<This is message number 6 >>
206 7 09/29 Test7 Testing message 7<<This is message number 7 >>
207 8 09/29 Test8 Testing message 8<<This is message number 8 >>
208 9 09/29 Test9 Testing message 9<<This is message number 9 >>
209 10 09/29 Test10 Testing message 10<<This is message number 10 >>
210 11 09/28 Test12 common subject<<This is message number 12 >>
211 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
212 EOF
213
214 run_prog sortm -datefield Alt-Date 1 11
215 scan -width 80 >"$actual"
216 check "$expected" "$actual"
217
218 # check -textfield subject (datefield major, subjects grouped)
219 start_test "-textfield subject (datefield major, subjects grouped)"
220 cat >"$expected" <<EOF
221 1 09/28 Test12 common subject<<This is message number 12 >>
222 2 09/29 Test11 Re: common subject<<This is message number 11 >>
223 3 09/29 Test2 Testing message 2<<This is message number 2 >>
224 4 09/29 Test3 Testing message 3<<This is message number 3 >>
225 5 09/29 Test4 Testing message 4<<This is message number 4 >>
226 6 09/29 Test5 Testing message 5<<This is message number 5 >>
227 7 09/29 Test6 Testing message 6<<This is message number 6 >>
228 8 09/29 Test7 Testing message 7<<This is message number 7 >>
229 9 09/29 Test8 Testing message 8<<This is message number 8 >>
230 10 09/29 Test9 Testing message 9<<This is message number 9 >>
231 11 09/29 Test10 Testing message 10<<This is message number 10 >>
232 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
233 EOF
234
235 run_prog sortm -textfield subject
236 scan -width 80 >"$actual"
237 check "$expected" "$actual"
238
239 # check -nolimit
240 start_test "-nolimit"
241 cat >"$expected" <<EOF
242 1 09/28 Test12 common subject<<This is message number 12 >>
243 2 09/29 Test11 Re: common subject<<This is message number 11 >>
244 3 09/29 Test2 Testing message 2<<This is message number 2 >>
245 4 09/29 Test3 Testing message 3<<This is message number 3 >>
246 5 09/29 Test4 Testing message 4<<This is message number 4 >>
247 6 09/29 Test5 Testing message 5<<This is message number 5 >>
248 7 09/29 Test6 Testing message 6<<This is message number 6 >>
249 8 09/29 Test7 Testing message 7<<This is message number 7 >>
250 9 09/29 Test8 Testing message 8<<This is message number 8 >>
251 10 09/29 Test9 Testing message 9<<This is message number 9 >>
252 11 09/29 Test10 Testing message 10<<This is message number 10 >>
253 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
254 EOF
255
256 run_prog sortm -textfield subject -limit 0 -nolimit
257 scan -width 80 >"$actual"
258 check "$expected" "$actual"
259
260 # check -textfield subject -limit 0 (subject sort)
261 start_test "-textfield subject -limit 0 (subject sort)"
262 cat >"$expected" <<EOF
263 1 09/29 Test11 Re: common subject<<This is message number 11 >>
264 2 09/28 Test12 common subject<<This is message number 12 >>
265 3 09/29 Test1 Testing message 1<<This is message number 1 >>
266 4 09/29 Test10 Testing message 10<<This is message number 10 >>
267 5 09/29 Test2 Testing message 2<<This is message number 2 >>
268 6 09/29 Test3 Testing message 3<<This is message number 3 >>
269 7 09/29 Test4 Testing message 4<<This is message number 4 >>
270 8 09/29 Test5 Testing message 5<<This is message number 5 >>
271 9 09/29 Test6 Testing message 6<<This is message number 6 >>
272 10 09/29 Test7 Testing message 7<<This is message number 7 >>
273 11 09/29 Test8 Testing message 8<<This is message number 8 >>
274 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
275 EOF
276
277 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
278 run_prog sortm -textfield subject -limit 0
279 scan -width 80 >"$actual"
280 check "$expected" "$actual"
281
282 # check -textfield -limit 0 (text sort)
283 start_test "-textfield -limit 0 (text sort)"
284 cat >"$expected" <<EOF
285 1 09/29 Test10 Testing message 10<<This is message number 10 >>
286 2 09/29 Test11 Re: common subject<<This is message number 11 >>
287 3 09/28 Test12 common subject<<This is message number 12 >>
288 4 09/29 Test1 Testing message 1<<This is message number 1 >>
289 5 09/29 Test2 Testing message 2<<This is message number 2 >>
290 6 09/29 Test3 Testing message 3<<This is message number 3 >>
291 7 09/29 Test4 Testing message 4<<This is message number 4 >>
292 8 09/29 Test5 Testing message 5<<This is message number 5 >>
293 9 09/29 Test6 Testing message 6<<This is message number 6 >>
294 10 09/29 Test7 Testing message 7<<This is message number 7 >>
295 11 09/29 Test8 Testing message 8<<This is message number 8 >>
296 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
297 EOF
298
299 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
300 run_prog sortm -textfield from -limit 0
301 scan -width 80 >"$actual"
302 check "$expected" "$actual"
303
304 # check -textfield with finite -limit that doesn't cover message 13
305 start_test "-textfield with finite -limit that doesn't cover message 13"
306 cat >$MH_TEST_DIR/Mail/inbox/13 <<EOF || exit 1
307 From: Test13 <test13@example.com>
308 To: Some User <user@example.com>
309 Date: Tue, 31 Oct 2006 23:59:59
310 Subject: Re: common subject
311
312 This is message number 13
313 EOF
314
315 cat >"$expected" <<EOF
316 1 09/28 Test12 common subject<<This is message number 12 >>
317 2 09/29 Test11 Re: common subject<<This is message number 11 >>
318 3 09/29 Test5 Testing message 5<<This is message number 5 >>
319 4 09/29 Test6 Testing message 6<<This is message number 6 >>
320 5 09/29 Test7 Testing message 7<<This is message number 7 >>
321 6 09/29 Test8 Testing message 8<<This is message number 8 >>
322 7 09/29 Test9 Testing message 9<<This is message number 9 >>
323 8 09/29 Test1 Testing message 1<<This is message number 1 >>
324 9 09/29 Test2 Testing message 2<<This is message number 2 >>
325 10 09/29 Test3 Testing message 3<<This is message number 3 >>
326 11 09/29 Test4 Testing message 4<<This is message number 4 >>
327 12+ 09/29 Test10 Testing message 10<<This is message number 10 >>
328 13 10/31 Test13 Re: common subject<<This is message number 13 >>
329 EOF
330
331 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
332 run_prog sortm -textfield subject -limit 10
333 scan -width 80 >"$actual"
334 check "$expected" "$actual"
335
336 # check -textfield with finite -limit that does cover message 13
337 start_test "-textfield with finite -limit that does cover message 13"
338 cat >"$expected" <<EOF
339 1 09/28 Test12 common subject<<This is message number 12 >>
340 2 09/29 Test11 Re: common subject<<This is message number 11 >>
341 3 10/31 Test13 Re: common subject<<This is message number 13 >>
342 4 09/29 Test1 Testing message 1<<This is message number 1 >>
343 5 09/29 Test2 Testing message 2<<This is message number 2 >>
344 6 09/29 Test3 Testing message 3<<This is message number 3 >>
345 7 09/29 Test4 Testing message 4<<This is message number 4 >>
346 8 09/29 Test10 Testing message 10<<This is message number 10 >>
347 9 09/29 Test5 Testing message 5<<This is message number 5 >>
348 10 09/29 Test6 Testing message 6<<This is message number 6 >>
349 11 09/29 Test7 Testing message 7<<This is message number 7 >>
350 12 09/29 Test8 Testing message 8<<This is message number 8 >>
351 13+ 09/29 Test9 Testing message 9<<This is message number 9 >>
352 EOF
353
354 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
355 run_prog sortm -textfield subject -limit 60
356 scan -width 80 >"$actual"
357 check "$expected" "$actual"
358
359 # check -notextfield
360 start_test "-notextfield"
361 cat >"$expected" <<EOF
362 1 09/28 Test12 common subject<<This is message number 12 >>
363 2 09/29 Test10 Testing message 10<<This is message number 10 >>
364 3 09/29 Test5 Testing message 5<<This is message number 5 >>
365 4 09/29 Test6 Testing message 6<<This is message number 6 >>
366 5 09/29 Test7 Testing message 7<<This is message number 7 >>
367 6 09/29 Test8 Testing message 8<<This is message number 8 >>
368 7 09/29 Test9 Testing message 9<<This is message number 9 >>
369 8 09/29 Test1 Testing message 1<<This is message number 1 >>
370 9 09/29 Test2 Testing message 2<<This is message number 2 >>
371 10 09/29 Test3 Testing message 3<<This is message number 3 >>
372 11 09/29 Test4 Testing message 4<<This is message number 4 >>
373 12 09/29 Test11 Re: common subject<<This is message number 11 >>
374 13+ 10/31 Test13 Re: common subject<<This is message number 13 >>
375 EOF
376
377 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
378 run_prog sortm -textfield subject -limit 60 -notextfield
379 scan -width 80 >"$actual"
380 check "$expected" "$actual"
381
382 # check -noall
383 start_test "-noall"
384 run_test 'sortm -noall' 'sortm: must specify messages to sort with -noall'
385
386 # check -all
387 start_test "-all"
388 cat >"$expected" <<EOF
389 1 09/28 Test12 common subject<<This is message number 12 >>
390 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
391 3 09/29 Test5 Testing message 5<<This is message number 5 >>
392 4 09/29 Test6 Testing message 6<<This is message number 6 >>
393 5 09/29 Test7 Testing message 7<<This is message number 7 >>
394 6 09/29 Test8 Testing message 8<<This is message number 8 >>
395 7 09/29 Test9 Testing message 9<<This is message number 9 >>
396 8 09/29 Test1 Testing message 1<<This is message number 1 >>
397 9 09/29 Test2 Testing message 2<<This is message number 2 >>
398 10 09/29 Test3 Testing message 3<<This is message number 3 >>
399 11 09/29 Test4 Testing message 4<<This is message number 4 >>
400 12 09/29 Test11 Re: common subject<<This is message number 11 >>
401 13 10/31 Test13 Re: common subject<<This is message number 13 >>
402 EOF
403
404 refile first +inbox; folder -pack >/dev/null
405 run_prog sortm -noall -all
406 scan -width 80 >"$actual"
407 check "$expected" "$actual"
408
409 # check -check
410 start_test "-check"
411 cat >"$expected" <<EOF
412 sortm: can't parse date field in message 14, will use file modification time
413 sortm: errors found, no messages sorted
414 EOF
415
416 sed -e 's/Sep//' $MH_TEST_DIR/Mail/inbox/7 > $MH_TEST_DIR/Mail/inbox/14
417 set +e
418 run_prog sortm -check >"$actual" 2>&1
419 set -e
420 check "$expected" "$actual"
421
422 cat >"$expected" <<EOF
423 1 09/28 Test12 common subject<<This is message number 12 >>
424 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
425 3 09/29 Test5 Testing message 5<<This is message number 5 >>
426 4 09/29 Test6 Testing message 6<<This is message number 6 >>
427 5 09/29 Test7 Testing message 7<<This is message number 7 >>
428 6 09/29 Test8 Testing message 8<<This is message number 8 >>
429 7 09/29 Test9 Testing message 9<<This is message number 9 >>
430 8 09/29 Test1 Testing message 1<<This is message number 1 >>
431 9 09/29 Test2 Testing message 2<<This is message number 2 >>
432 10 09/29 Test3 Testing message 3<<This is message number 3 >>
433 11 09/29 Test4 Testing message 4<<This is message number 4 >>
434 12 09/29 Test11 Re: common subject<<This is message number 11 >>
435 13 10/31 Test13 Re: common subject<<This is message number 13 >>
436 14 01/00 Test9 Testing message 9<<This is message number 9 >>
437 EOF
438 scan -width 80 >"$actual"
439 check "$expected" "$actual"
440
441 # check -nocheck
442 start_test "-nocheck"
443 cat >"$expected" <<EOF
444 1 09/28 Test12 common subject<<This is message number 12 >>
445 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
446 3 09/29 Test5 Testing message 5<<This is message number 5 >>
447 4 09/29 Test6 Testing message 6<<This is message number 6 >>
448 5 09/29 Test7 Testing message 7<<This is message number 7 >>
449 6 09/29 Test8 Testing message 8<<This is message number 8 >>
450 7 09/29 Test9 Testing message 9<<This is message number 9 >>
451 8 09/29 Test1 Testing message 1<<This is message number 1 >>
452 9 09/29 Test2 Testing message 2<<This is message number 2 >>
453 10 09/29 Test3 Testing message 3<<This is message number 3 >>
454 11 09/29 Test4 Testing message 4<<This is message number 4 >>
455 12 09/29 Test11 Re: common subject<<This is message number 11 >>
456 13 10/31 Test13 Re: common subject<<This is message number 13 >>
457 14 01/00 Test9 Testing message 9<<This is message number 9 >>
458 EOF
459
460 sed -e 's/Sep//' $MH_TEST_DIR/Mail/inbox/7 > $MH_TEST_DIR/Mail/inbox/14
461 run_test 'sortm -check -nocheck' \
462 "sortm: can't parse date field in message 14, will use file \
463 modification time"
464 scan -width 80 >"$actual"
465 check "$expected" "$actual"
466
467
468 finish_test
469 exit ${failed:-0}