2 ######################################################
6 ######################################################
10 if test -z "$MH_OBJ_DIR"; then
11 srcdir
=`dirname $0`/..
/..
12 MH_OBJ_DIR
=`cd $srcdir && pwd`; export MH_OBJ_DIR
15 .
"$MH_OBJ_DIR/test/common.sh"
19 ! sortm
- >/dev
/null
2>&1 # gcov
21 expected
=$MH_TEST_DIR/$$.expected
22 actual
=$MH_TEST_DIR/$$.actual
27 cat >"$expected" <<EOF
28 Usage: sortm [+folder] [msgs] [switches]
42 #### Skip nmh intro text.
43 run_prog sortm
-help | sed '/^$/,$d' >"$actual" 2>&1
44 check
"$expected" "$actual"
47 case `sortm -version` in
49 * ) echo "$0: sortm -v generated unexpected output" 1>&2
50 failed
=`expr ${failed:-0} + 1`;;
53 cat >$MH_TEST_DIR/Mail
/inbox
/11 <<EOF || exit 1
54 From: Test11 <test11@example.com>
55 To: Some User <user@example.com>
56 Date: Fri, 29 Sep 2006 00:00:01
57 Alt-Date: Thu, 1 Sep 2005 00:00:00
58 Subject: Re: common subject
60 This is message number 11
63 cat >$MH_TEST_DIR/Mail
/inbox
/12 <<EOF || exit 1
64 From: Test12 <test12@example.com>
65 To: Some User <user@example.com>
66 Date: Thu, 28 Sep 2006 23:59:59
67 Alt-Date: Sat, 30 Sep 2006 00:00:00
68 Subject: common subject
70 This is message number 12
73 # check with no options
74 cat >"$expected" <<EOF
75 1 09/28 Test12 common subject<<This is message number 12 >>
76 2 09/29 Test1 Testing message 1<<This is message number 1 >>
77 3 09/29 Test2 Testing message 2<<This is message number 2 >>
78 4 09/29 Test3 Testing message 3<<This is message number 3 >>
79 5 09/29 Test4 Testing message 4<<This is message number 4 >>
80 6 09/29 Test5 Testing message 5<<This is message number 5 >>
81 7 09/29 Test6 Testing message 6<<This is message number 6 >>
82 8 09/29 Test7 Testing message 7<<This is message number 7 >>
83 9 09/29 Test8 Testing message 8<<This is message number 8 >>
84 10 09/29 Test9 Testing message 9<<This is message number 9 >>
85 11 09/29 Test10 Testing message 10<<This is message number 10 >>
86 12 09/29 Test11 Re: common subject<<This is message number 11 >>
90 scan
-width 80 >"$actual"
91 check
"$expected" "$actual"
94 cat >"$expected" <<EOF
95 1 09/28 Test12 common subject<<This is message number 12 >>
96 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
97 3 09/29 Test2 Testing message 2<<This is message number 2 >>
98 4 09/29 Test3 Testing message 3<<This is message number 3 >>
99 5 09/29 Test4 Testing message 4<<This is message number 4 >>
100 6 09/29 Test5 Testing message 5<<This is message number 5 >>
101 7 09/29 Test6 Testing message 6<<This is message number 6 >>
102 8 09/29 Test7 Testing message 7<<This is message number 7 >>
103 9 09/29 Test8 Testing message 8<<This is message number 8 >>
104 10 09/29 Test9 Testing message 9<<This is message number 9 >>
105 11 09/29 Test10 Testing message 10<<This is message number 10 >>
106 12 09/29 Test11 Re: common subject<<This is message number 11 >>
109 refile first
+inbox
; folder
-pack >/dev
/null
110 run_prog sortm
+inbox
111 scan
-width 80 >"$actual"
112 check
"$expected" "$actual"
115 cat >"$expected" <<EOF
116 sorting by datefield date
117 renaming message chain from 12 to 1
118 message 11 becomes message 12
119 message 10 becomes message 11
120 message 9 becomes message 10
121 message 8 becomes message 9
122 message 7 becomes message 8
123 message 6 becomes message 7
124 message 5 becomes message 6
125 message 4 becomes message 5
126 message 3 becomes message 4
127 message 2 becomes message 3
128 message 1 becomes message 2
129 1 09/28 Test12 common subject<<This is message number 12 >>
130 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
131 3 09/29 Test2 Testing message 2<<This is message number 2 >>
132 4 09/29 Test3 Testing message 3<<This is message number 3 >>
133 5 09/29 Test4 Testing message 4<<This is message number 4 >>
134 6 09/29 Test5 Testing message 5<<This is message number 5 >>
135 7 09/29 Test6 Testing message 6<<This is message number 6 >>
136 8 09/29 Test7 Testing message 7<<This is message number 7 >>
137 9 09/29 Test8 Testing message 8<<This is message number 8 >>
138 10 09/29 Test9 Testing message 9<<This is message number 9 >>
139 11 09/29 Test10 Testing message 10<<This is message number 10 >>
140 12 09/29 Test11 Re: common subject<<This is message number 11 >>
143 refile first
+inbox
; folder
-pack >/dev
/null
144 run_prog sortm
-verbose >"$actual"
145 scan
-width 80 >>"$actual"
146 check
"$expected" "$actual"
149 cat >"$expected" <<EOF
150 1 09/28 Test12 common subject<<This is message number 12 >>
151 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
152 3 09/29 Test2 Testing message 2<<This is message number 2 >>
153 4 09/29 Test3 Testing message 3<<This is message number 3 >>
154 5 09/29 Test4 Testing message 4<<This is message number 4 >>
155 6 09/29 Test5 Testing message 5<<This is message number 5 >>
156 7 09/29 Test6 Testing message 6<<This is message number 6 >>
157 8 09/29 Test7 Testing message 7<<This is message number 7 >>
158 9 09/29 Test8 Testing message 8<<This is message number 8 >>
159 10 09/29 Test9 Testing message 9<<This is message number 9 >>
160 11 09/29 Test10 Testing message 10<<This is message number 10 >>
161 12 09/29 Test11 Re: common subject<<This is message number 11 >>
164 refile first
+inbox
; folder
-pack >/dev
/null
165 run_prog sortm
-verbose -noverbose >"$actual"
166 scan
-width 80 >>"$actual"
167 check
"$expected" "$actual"
170 cat >"$expected" <<EOF
171 1 09/28 Test12 common subject<<This is message number 12 >>
172 2 09/29 Test2 Testing message 2<<This is message number 2 >>
173 3 09/29 Test3 Testing message 3<<This is message number 3 >>
174 4 09/29 Test4 Testing message 4<<This is message number 4 >>
175 5 09/29 Test5 Testing message 5<<This is message number 5 >>
176 6 09/29 Test6 Testing message 6<<This is message number 6 >>
177 7 09/29 Test7 Testing message 7<<This is message number 7 >>
178 8 09/29 Test8 Testing message 8<<This is message number 8 >>
179 9 09/29 Test9 Testing message 9<<This is message number 9 >>
180 10 09/29 Test10 Testing message 10<<This is message number 10 >>
181 11 09/29 Test11 Re: common subject<<This is message number 11 >>
182 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
185 refile first
+inbox
; folder
-pack >/dev
/null
186 run_prog sortm first last
187 scan
-width 80 >"$actual"
188 check
"$expected" "$actual"
191 cat >"$expected" <<EOF
192 1 09/29 Test11 Re: common subject<<This is message number 11 >>
193 2 09/29 Test2 Testing message 2<<This is message number 2 >>
194 3 09/29 Test3 Testing message 3<<This is message number 3 >>
195 4 09/29 Test4 Testing message 4<<This is message number 4 >>
196 5 09/29 Test5 Testing message 5<<This is message number 5 >>
197 6 09/29 Test6 Testing message 6<<This is message number 6 >>
198 7 09/29 Test7 Testing message 7<<This is message number 7 >>
199 8 09/29 Test8 Testing message 8<<This is message number 8 >>
200 9 09/29 Test9 Testing message 9<<This is message number 9 >>
201 10 09/29 Test10 Testing message 10<<This is message number 10 >>
202 11 09/28 Test12 common subject<<This is message number 12 >>
203 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
206 run_prog sortm
-datefield Alt
-Date 1 11
207 scan
-width 80 >"$actual"
208 check
"$expected" "$actual"
210 # check -textfield subject (datefield major, subjects grouped)
211 cat >"$expected" <<EOF
212 1 09/28 Test12 common subject<<This is message number 12 >>
213 2 09/29 Test11 Re: common subject<<This is message number 11 >>
214 3 09/29 Test2 Testing message 2<<This is message number 2 >>
215 4 09/29 Test3 Testing message 3<<This is message number 3 >>
216 5 09/29 Test4 Testing message 4<<This is message number 4 >>
217 6 09/29 Test5 Testing message 5<<This is message number 5 >>
218 7 09/29 Test6 Testing message 6<<This is message number 6 >>
219 8 09/29 Test7 Testing message 7<<This is message number 7 >>
220 9 09/29 Test8 Testing message 8<<This is message number 8 >>
221 10 09/29 Test9 Testing message 9<<This is message number 9 >>
222 11 09/29 Test10 Testing message 10<<This is message number 10 >>
223 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
226 run_prog sortm
-textfield subject
227 scan
-width 80 >"$actual"
228 check
"$expected" "$actual"
231 cat >"$expected" <<EOF
232 1 09/28 Test12 common subject<<This is message number 12 >>
233 2 09/29 Test11 Re: common subject<<This is message number 11 >>
234 3 09/29 Test2 Testing message 2<<This is message number 2 >>
235 4 09/29 Test3 Testing message 3<<This is message number 3 >>
236 5 09/29 Test4 Testing message 4<<This is message number 4 >>
237 6 09/29 Test5 Testing message 5<<This is message number 5 >>
238 7 09/29 Test6 Testing message 6<<This is message number 6 >>
239 8 09/29 Test7 Testing message 7<<This is message number 7 >>
240 9 09/29 Test8 Testing message 8<<This is message number 8 >>
241 10 09/29 Test9 Testing message 9<<This is message number 9 >>
242 11 09/29 Test10 Testing message 10<<This is message number 10 >>
243 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
246 run_prog sortm
-textfield subject
-limit 0 -nolimit
247 scan
-width 80 >"$actual"
248 check
"$expected" "$actual"
250 # check -textfield subject -limit 0 (subject sort)
251 cat >"$expected" <<EOF
252 1 09/29 Test11 Re: common subject<<This is message number 11 >>
253 2 09/28 Test12 common subject<<This is message number 12 >>
254 3 09/29 Test1 Testing message 1<<This is message number 1 >>
255 4 09/29 Test10 Testing message 10<<This is message number 10 >>
256 5 09/29 Test2 Testing message 2<<This is message number 2 >>
257 6 09/29 Test3 Testing message 3<<This is message number 3 >>
258 7 09/29 Test4 Testing message 4<<This is message number 4 >>
259 8 09/29 Test5 Testing message 5<<This is message number 5 >>
260 9 09/29 Test6 Testing message 6<<This is message number 6 >>
261 10 09/29 Test7 Testing message 7<<This is message number 7 >>
262 11 09/29 Test8 Testing message 8<<This is message number 8 >>
263 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
266 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
267 run_prog sortm
-textfield subject
-limit 0
268 scan
-width 80 >"$actual"
269 check
"$expected" "$actual"
271 # check -textfield -limit 0 (text sort)
272 cat >"$expected" <<EOF
273 1 09/29 Test10 Testing message 10<<This is message number 10 >>
274 2 09/29 Test11 Re: common subject<<This is message number 11 >>
275 3 09/28 Test12 common subject<<This is message number 12 >>
276 4 09/29 Test1 Testing message 1<<This is message number 1 >>
277 5 09/29 Test2 Testing message 2<<This is message number 2 >>
278 6 09/29 Test3 Testing message 3<<This is message number 3 >>
279 7 09/29 Test4 Testing message 4<<This is message number 4 >>
280 8 09/29 Test5 Testing message 5<<This is message number 5 >>
281 9 09/29 Test6 Testing message 6<<This is message number 6 >>
282 10 09/29 Test7 Testing message 7<<This is message number 7 >>
283 11 09/29 Test8 Testing message 8<<This is message number 8 >>
284 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
287 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
288 run_prog sortm
-textfield from
-limit 0
289 scan
-width 80 >"$actual"
290 check
"$expected" "$actual"
292 # check -textfield with finite -limit that doesn't cover message 13
293 cat >$MH_TEST_DIR/Mail
/inbox
/13 <<EOF || exit 1
294 From: Test13 <test13@example.com>
295 To: Some User <user@example.com>
296 Date: Tue, 31 Oct 2006 23:59:59
297 Subject: Re: common subject
299 This is message number 13
302 cat >"$expected" <<EOF
303 1 09/28 Test12 common subject<<This is message number 12 >>
304 2 09/29 Test11 Re: common subject<<This is message number 11 >>
305 3 09/29 Test5 Testing message 5<<This is message number 5 >>
306 4 09/29 Test6 Testing message 6<<This is message number 6 >>
307 5 09/29 Test7 Testing message 7<<This is message number 7 >>
308 6 09/29 Test8 Testing message 8<<This is message number 8 >>
309 7 09/29 Test9 Testing message 9<<This is message number 9 >>
310 8 09/29 Test1 Testing message 1<<This is message number 1 >>
311 9 09/29 Test2 Testing message 2<<This is message number 2 >>
312 10 09/29 Test3 Testing message 3<<This is message number 3 >>
313 11 09/29 Test4 Testing message 4<<This is message number 4 >>
314 12+ 09/29 Test10 Testing message 10<<This is message number 10 >>
315 13 10/31 Test13 Re: common subject<<This is message number 13 >>
318 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
319 run_prog sortm
-textfield subject
-limit 10
320 scan
-width 80 >"$actual"
321 check
"$expected" "$actual"
323 # check -textfield with finite -limit that does cover message 13
324 cat >"$expected" <<EOF
325 1 09/28 Test12 common subject<<This is message number 12 >>
326 2 09/29 Test11 Re: common subject<<This is message number 11 >>
327 3 10/31 Test13 Re: common subject<<This is message number 13 >>
328 4 09/29 Test1 Testing message 1<<This is message number 1 >>
329 5 09/29 Test2 Testing message 2<<This is message number 2 >>
330 6 09/29 Test3 Testing message 3<<This is message number 3 >>
331 7 09/29 Test4 Testing message 4<<This is message number 4 >>
332 8 09/29 Test10 Testing message 10<<This is message number 10 >>
333 9 09/29 Test5 Testing message 5<<This is message number 5 >>
334 10 09/29 Test6 Testing message 6<<This is message number 6 >>
335 11 09/29 Test7 Testing message 7<<This is message number 7 >>
336 12 09/29 Test8 Testing message 8<<This is message number 8 >>
337 13+ 09/29 Test9 Testing message 9<<This is message number 9 >>
340 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
341 run_prog sortm
-textfield subject
-limit 60
342 scan
-width 80 >"$actual"
343 check
"$expected" "$actual"
346 cat >"$expected" <<EOF
347 1 09/28 Test12 common subject<<This is message number 12 >>
348 2 09/29 Test10 Testing message 10<<This is message number 10 >>
349 3 09/29 Test5 Testing message 5<<This is message number 5 >>
350 4 09/29 Test6 Testing message 6<<This is message number 6 >>
351 5 09/29 Test7 Testing message 7<<This is message number 7 >>
352 6 09/29 Test8 Testing message 8<<This is message number 8 >>
353 7 09/29 Test9 Testing message 9<<This is message number 9 >>
354 8 09/29 Test1 Testing message 1<<This is message number 1 >>
355 9 09/29 Test2 Testing message 2<<This is message number 2 >>
356 10 09/29 Test3 Testing message 3<<This is message number 3 >>
357 11 09/29 Test4 Testing message 4<<This is message number 4 >>
358 12 09/29 Test11 Re: common subject<<This is message number 11 >>
359 13+ 10/31 Test13 Re: common subject<<This is message number 13 >>
362 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
363 run_prog sortm
-textfield subject
-limit 60 -notextfield
364 scan
-width 80 >"$actual"
365 check
"$expected" "$actual"
368 run_test
'sortm -noall' 'sortm: must specify messages to sort with -noall'
371 cat >"$expected" <<EOF
372 1 09/28 Test12 common subject<<This is message number 12 >>
373 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
374 3 09/29 Test5 Testing message 5<<This is message number 5 >>
375 4 09/29 Test6 Testing message 6<<This is message number 6 >>
376 5 09/29 Test7 Testing message 7<<This is message number 7 >>
377 6 09/29 Test8 Testing message 8<<This is message number 8 >>
378 7 09/29 Test9 Testing message 9<<This is message number 9 >>
379 8 09/29 Test1 Testing message 1<<This is message number 1 >>
380 9 09/29 Test2 Testing message 2<<This is message number 2 >>
381 10 09/29 Test3 Testing message 3<<This is message number 3 >>
382 11 09/29 Test4 Testing message 4<<This is message number 4 >>
383 12 09/29 Test11 Re: common subject<<This is message number 11 >>
384 13 10/31 Test13 Re: common subject<<This is message number 13 >>
387 refile first
+inbox
; folder
-pack >/dev
/null
388 run_prog sortm
-noall -all
389 scan
-width 80 >"$actual"
390 check
"$expected" "$actual"
393 cat >"$expected" <<EOF
394 sortm: can't parse date field in message 14, will use file modification time
395 sortm: errors found, no messages sorted
398 sed -e 's/Sep//' $MH_TEST_DIR/Mail
/inbox
/7 > $MH_TEST_DIR/Mail
/inbox
/14
400 run_prog sortm
-check >"$actual" 2>&1
402 check
"$expected" "$actual"
404 cat >"$expected" <<EOF
405 1 09/28 Test12 common subject<<This is message number 12 >>
406 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
407 3 09/29 Test5 Testing message 5<<This is message number 5 >>
408 4 09/29 Test6 Testing message 6<<This is message number 6 >>
409 5 09/29 Test7 Testing message 7<<This is message number 7 >>
410 6 09/29 Test8 Testing message 8<<This is message number 8 >>
411 7 09/29 Test9 Testing message 9<<This is message number 9 >>
412 8 09/29 Test1 Testing message 1<<This is message number 1 >>
413 9 09/29 Test2 Testing message 2<<This is message number 2 >>
414 10 09/29 Test3 Testing message 3<<This is message number 3 >>
415 11 09/29 Test4 Testing message 4<<This is message number 4 >>
416 12 09/29 Test11 Re: common subject<<This is message number 11 >>
417 13 10/31 Test13 Re: common subject<<This is message number 13 >>
418 14 01/00 Test9 Testing message 9<<This is message number 9 >>
420 scan
-width 80 >"$actual"
421 check
"$expected" "$actual"
424 cat >"$expected" <<EOF
425 1 09/28 Test12 common subject<<This is message number 12 >>
426 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
427 3 09/29 Test5 Testing message 5<<This is message number 5 >>
428 4 09/29 Test6 Testing message 6<<This is message number 6 >>
429 5 09/29 Test7 Testing message 7<<This is message number 7 >>
430 6 09/29 Test8 Testing message 8<<This is message number 8 >>
431 7 09/29 Test9 Testing message 9<<This is message number 9 >>
432 8 09/29 Test1 Testing message 1<<This is message number 1 >>
433 9 09/29 Test2 Testing message 2<<This is message number 2 >>
434 10 09/29 Test3 Testing message 3<<This is message number 3 >>
435 11 09/29 Test4 Testing message 4<<This is message number 4 >>
436 12 09/29 Test11 Re: common subject<<This is message number 11 >>
437 13 10/31 Test13 Re: common subject<<This is message number 13 >>
438 14 01/00 Test9 Testing message 9<<This is message number 9 >>
441 sed -e 's/Sep//' $MH_TEST_DIR/Mail
/inbox
/7 > $MH_TEST_DIR/Mail
/inbox
/14
442 run_test
'sortm -check -nocheck' \
443 "sortm: can't parse date field in message 14, will use file \
445 scan
-width 80 >"$actual"
446 check
"$expected" "$actual"