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 expected=$MH_TEST_DIR/$$.expected
20 actual=$MH_TEST_DIR/$$.actual
25 cat >"$expected" <<EOF
26 Usage: sortm [+folder] [msgs] [switches]
40 sortm -help >"$actual" 2>&1
41 check "$expected" "$actual"
44 case `sortm -version` in
46 * ) echo "$0: sortm -v generated unexpected output" 1>&2
47 failed=`expr ${failed:-0} + 1`;;
50 cat >$MH_TEST_DIR/Mail/inbox/11 <<EOF || exit 1
51 From: Test11 <test11@example.com>
52 To: Some User <user@example.com>
53 Date: Fri, 29 Sep 2006 00:00:01
54 Alt-Date: Thu, 1 Sep 2005 00:00:00
55 Subject: Re: common subject
57 This is message number 11
60 cat >$MH_TEST_DIR/Mail/inbox/12 <<EOF || exit 1
61 From: Test12 <test12@example.com>
62 To: Some User <user@example.com>
63 Date: Thu, 28 Sep 2006 23:59:59
64 Alt-Date: Sat, 30 Sep 2006 00:00:00
65 Subject: common subject
67 This is message number 12
70 # check with no options
71 cat >"$expected" <<EOF
72 1 09/28 Test12 common subject<<This is message number 12 >>
73 2 09/29 Test1 Testing message 1<<This is message number 1 >>
74 3 09/29 Test2 Testing message 2<<This is message number 2 >>
75 4 09/29 Test3 Testing message 3<<This is message number 3 >>
76 5 09/29 Test4 Testing message 4<<This is message number 4 >>
77 6 09/29 Test5 Testing message 5<<This is message number 5 >>
78 7 09/29 Test6 Testing message 6<<This is message number 6 >>
79 8 09/29 Test7 Testing message 7<<This is message number 7 >>
80 9 09/29 Test8 Testing message 8<<This is message number 8 >>
81 10 09/29 Test9 Testing message 9<<This is message number 9 >>
82 11 09/29 Test10 Testing message 10<<This is message number 10 >>
83 12 09/29 Test11 Re: common subject<<This is message number 11 >>
88 check "$expected" "$actual"
91 cat >"$expected" <<EOF
92 1 09/28 Test12 common subject<<This is message number 12 >>
93 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
94 3 09/29 Test2 Testing message 2<<This is message number 2 >>
95 4 09/29 Test3 Testing message 3<<This is message number 3 >>
96 5 09/29 Test4 Testing message 4<<This is message number 4 >>
97 6 09/29 Test5 Testing message 5<<This is message number 5 >>
98 7 09/29 Test6 Testing message 6<<This is message number 6 >>
99 8 09/29 Test7 Testing message 7<<This is message number 7 >>
100 9 09/29 Test8 Testing message 8<<This is message number 8 >>
101 10 09/29 Test9 Testing message 9<<This is message number 9 >>
102 11 09/29 Test10 Testing message 10<<This is message number 10 >>
103 12 09/29 Test11 Re: common subject<<This is message number 11 >>
106 refile first +inbox; folder -pack >/dev/null
109 check "$expected" "$actual"
112 cat >"$expected" <<EOF
113 sorting by datefield date
114 renaming message chain from 12 to 1
115 message 11 becomes message 12
116 message 10 becomes message 11
117 message 9 becomes message 10
118 message 8 becomes message 9
119 message 7 becomes message 8
120 message 6 becomes message 7
121 message 5 becomes message 6
122 message 4 becomes message 5
123 message 3 becomes message 4
124 message 2 becomes message 3
125 message 1 becomes message 2
126 1 09/28 Test12 common subject<<This is message number 12 >>
127 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
128 3 09/29 Test2 Testing message 2<<This is message number 2 >>
129 4 09/29 Test3 Testing message 3<<This is message number 3 >>
130 5 09/29 Test4 Testing message 4<<This is message number 4 >>
131 6 09/29 Test5 Testing message 5<<This is message number 5 >>
132 7 09/29 Test6 Testing message 6<<This is message number 6 >>
133 8 09/29 Test7 Testing message 7<<This is message number 7 >>
134 9 09/29 Test8 Testing message 8<<This is message number 8 >>
135 10 09/29 Test9 Testing message 9<<This is message number 9 >>
136 11 09/29 Test10 Testing message 10<<This is message number 10 >>
137 12 09/29 Test11 Re: common subject<<This is message number 11 >>
140 refile first +inbox; folder -pack >/dev/null
141 sortm -verbose >"$actual"
143 check "$expected" "$actual"
146 cat >"$expected" <<EOF
147 1 09/28 Test12 common subject<<This is message number 12 >>
148 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
149 3 09/29 Test2 Testing message 2<<This is message number 2 >>
150 4 09/29 Test3 Testing message 3<<This is message number 3 >>
151 5 09/29 Test4 Testing message 4<<This is message number 4 >>
152 6 09/29 Test5 Testing message 5<<This is message number 5 >>
153 7 09/29 Test6 Testing message 6<<This is message number 6 >>
154 8 09/29 Test7 Testing message 7<<This is message number 7 >>
155 9 09/29 Test8 Testing message 8<<This is message number 8 >>
156 10 09/29 Test9 Testing message 9<<This is message number 9 >>
157 11 09/29 Test10 Testing message 10<<This is message number 10 >>
158 12 09/29 Test11 Re: common subject<<This is message number 11 >>
161 refile first +inbox; folder -pack >/dev/null
162 sortm -verbose -noverbose >"$actual"
164 check "$expected" "$actual"
167 cat >"$expected" <<EOF
168 1 09/28 Test12 common subject<<This is message number 12 >>
169 2 09/29 Test2 Testing message 2<<This is message number 2 >>
170 3 09/29 Test3 Testing message 3<<This is message number 3 >>
171 4 09/29 Test4 Testing message 4<<This is message number 4 >>
172 5 09/29 Test5 Testing message 5<<This is message number 5 >>
173 6 09/29 Test6 Testing message 6<<This is message number 6 >>
174 7 09/29 Test7 Testing message 7<<This is message number 7 >>
175 8 09/29 Test8 Testing message 8<<This is message number 8 >>
176 9 09/29 Test9 Testing message 9<<This is message number 9 >>
177 10 09/29 Test10 Testing message 10<<This is message number 10 >>
178 11 09/29 Test11 Re: common subject<<This is message number 11 >>
179 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
182 refile first +inbox; folder -pack >/dev/null
185 check "$expected" "$actual"
188 cat >"$expected" <<EOF
189 1 09/29 Test11 Re: common subject<<This is message number 11 >>
190 2 09/29 Test2 Testing message 2<<This is message number 2 >>
191 3 09/29 Test3 Testing message 3<<This is message number 3 >>
192 4 09/29 Test4 Testing message 4<<This is message number 4 >>
193 5 09/29 Test5 Testing message 5<<This is message number 5 >>
194 6 09/29 Test6 Testing message 6<<This is message number 6 >>
195 7 09/29 Test7 Testing message 7<<This is message number 7 >>
196 8 09/29 Test8 Testing message 8<<This is message number 8 >>
197 9 09/29 Test9 Testing message 9<<This is message number 9 >>
198 10 09/29 Test10 Testing message 10<<This is message number 10 >>
199 11 09/28 Test12 common subject<<This is message number 12 >>
200 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
203 sortm -datefield Alt-Date 1 11
205 check "$expected" "$actual"
207 # check -textfield subject (datefield major, subjects grouped)
208 cat >"$expected" <<EOF
209 1 09/28 Test12 common subject<<This is message number 12 >>
210 2 09/29 Test11 Re: common subject<<This is message number 11 >>
211 3 09/29 Test2 Testing message 2<<This is message number 2 >>
212 4 09/29 Test3 Testing message 3<<This is message number 3 >>
213 5 09/29 Test4 Testing message 4<<This is message number 4 >>
214 6 09/29 Test5 Testing message 5<<This is message number 5 >>
215 7 09/29 Test6 Testing message 6<<This is message number 6 >>
216 8 09/29 Test7 Testing message 7<<This is message number 7 >>
217 9 09/29 Test8 Testing message 8<<This is message number 8 >>
218 10 09/29 Test9 Testing message 9<<This is message number 9 >>
219 11 09/29 Test10 Testing message 10<<This is message number 10 >>
220 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
223 sortm -textfield subject
225 check "$expected" "$actual"
228 cat >"$expected" <<EOF
229 1 09/28 Test12 common subject<<This is message number 12 >>
230 2 09/29 Test11 Re: common subject<<This is message number 11 >>
231 3 09/29 Test2 Testing message 2<<This is message number 2 >>
232 4 09/29 Test3 Testing message 3<<This is message number 3 >>
233 5 09/29 Test4 Testing message 4<<This is message number 4 >>
234 6 09/29 Test5 Testing message 5<<This is message number 5 >>
235 7 09/29 Test6 Testing message 6<<This is message number 6 >>
236 8 09/29 Test7 Testing message 7<<This is message number 7 >>
237 9 09/29 Test8 Testing message 8<<This is message number 8 >>
238 10 09/29 Test9 Testing message 9<<This is message number 9 >>
239 11 09/29 Test10 Testing message 10<<This is message number 10 >>
240 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
243 sortm -textfield subject -limit 0 -nolimit
245 check "$expected" "$actual"
247 # check -textfield subject -limit 0 (subject sort)
248 cat >"$expected" <<EOF
249 1 09/29 Test11 Re: common subject<<This is message number 11 >>
250 2 09/28 Test12 common subject<<This is message number 12 >>
251 3 09/29 Test1 Testing message 1<<This is message number 1 >>
252 4 09/29 Test10 Testing message 10<<This is message number 10 >>
253 5 09/29 Test2 Testing message 2<<This is message number 2 >>
254 6 09/29 Test3 Testing message 3<<This is message number 3 >>
255 7 09/29 Test4 Testing message 4<<This is message number 4 >>
256 8 09/29 Test5 Testing message 5<<This is message number 5 >>
257 9 09/29 Test6 Testing message 6<<This is message number 6 >>
258 10 09/29 Test7 Testing message 7<<This is message number 7 >>
259 11 09/29 Test8 Testing message 8<<This is message number 8 >>
260 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
263 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
264 sortm -textfield subject -limit 0
266 check "$expected" "$actual"
268 # check -textfield -limit 0 (text sort)
269 cat >"$expected" <<EOF
270 1 09/29 Test10 Testing message 10<<This is message number 10 >>
271 2 09/29 Test11 Re: common subject<<This is message number 11 >>
272 3 09/28 Test12 common subject<<This is message number 12 >>
273 4 09/29 Test1 Testing message 1<<This is message number 1 >>
274 5 09/29 Test2 Testing message 2<<This is message number 2 >>
275 6 09/29 Test3 Testing message 3<<This is message number 3 >>
276 7 09/29 Test4 Testing message 4<<This is message number 4 >>
277 8 09/29 Test5 Testing message 5<<This is message number 5 >>
278 9 09/29 Test6 Testing message 6<<This is message number 6 >>
279 10 09/29 Test7 Testing message 7<<This is message number 7 >>
280 11 09/29 Test8 Testing message 8<<This is message number 8 >>
281 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
284 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
285 sortm -textfield from -limit 0
287 check "$expected" "$actual"
289 # check -textfield with finite -limit that doesn't cover message 13
290 cat >$MH_TEST_DIR/Mail/inbox/13 <<EOF || exit 1
291 From: Test13 <test13@example.com>
292 To: Some User <user@example.com>
293 Date: Tue, 31 Oct 2006 23:59:59
294 Subject: Re: common subject
296 This is message number 13
299 cat >"$expected" <<EOF
300 1 09/28 Test12 common subject<<This is message number 12 >>
301 2 09/29 Test11 Re: common subject<<This is message number 11 >>
302 3 09/29 Test5 Testing message 5<<This is message number 5 >>
303 4 09/29 Test6 Testing message 6<<This is message number 6 >>
304 5 09/29 Test7 Testing message 7<<This is message number 7 >>
305 6 09/29 Test8 Testing message 8<<This is message number 8 >>
306 7 09/29 Test9 Testing message 9<<This is message number 9 >>
307 8 09/29 Test1 Testing message 1<<This is message number 1 >>
308 9 09/29 Test2 Testing message 2<<This is message number 2 >>
309 10 09/29 Test3 Testing message 3<<This is message number 3 >>
310 11 09/29 Test4 Testing message 4<<This is message number 4 >>
311 12+ 09/29 Test10 Testing message 10<<This is message number 10 >>
312 13 10/31 Test13 Re: common subject<<This is message number 13 >>
315 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
316 sortm -textfield subject -limit 10
318 check "$expected" "$actual"
320 # check -textfield with finite -limit that does cover message 13
321 cat >"$expected" <<EOF
322 1 09/28 Test12 common subject<<This is message number 12 >>
323 2 09/29 Test11 Re: common subject<<This is message number 11 >>
324 3 10/31 Test13 Re: common subject<<This is message number 13 >>
325 4 09/29 Test1 Testing message 1<<This is message number 1 >>
326 5 09/29 Test2 Testing message 2<<This is message number 2 >>
327 6 09/29 Test3 Testing message 3<<This is message number 3 >>
328 7 09/29 Test4 Testing message 4<<This is message number 4 >>
329 8 09/29 Test10 Testing message 10<<This is message number 10 >>
330 9 09/29 Test5 Testing message 5<<This is message number 5 >>
331 10 09/29 Test6 Testing message 6<<This is message number 6 >>
332 11 09/29 Test7 Testing message 7<<This is message number 7 >>
333 12 09/29 Test8 Testing message 8<<This is message number 8 >>
334 13+ 09/29 Test9 Testing message 9<<This is message number 9 >>
337 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
338 sortm -textfield subject -limit 60
340 check "$expected" "$actual"
343 cat >"$expected" <<EOF
344 1 09/28 Test12 common subject<<This is message number 12 >>
345 2 09/29 Test10 Testing message 10<<This is message number 10 >>
346 3 09/29 Test5 Testing message 5<<This is message number 5 >>
347 4 09/29 Test6 Testing message 6<<This is message number 6 >>
348 5 09/29 Test7 Testing message 7<<This is message number 7 >>
349 6 09/29 Test8 Testing message 8<<This is message number 8 >>
350 7 09/29 Test9 Testing message 9<<This is message number 9 >>
351 8 09/29 Test1 Testing message 1<<This is message number 1 >>
352 9 09/29 Test2 Testing message 2<<This is message number 2 >>
353 10 09/29 Test3 Testing message 3<<This is message number 3 >>
354 11 09/29 Test4 Testing message 4<<This is message number 4 >>
355 12 09/29 Test11 Re: common subject<<This is message number 11 >>
356 13+ 10/31 Test13 Re: common subject<<This is message number 13 >>
359 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
360 sortm -textfield subject -limit 60 -notextfield
362 check "$expected" "$actual"
365 run_test 'sortm -noall' 'sortm: must specify messages to sort with -noall'
368 cat >"$expected" <<EOF
369 1 09/28 Test12 common subject<<This is message number 12 >>
370 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
371 3 09/29 Test5 Testing message 5<<This is message number 5 >>
372 4 09/29 Test6 Testing message 6<<This is message number 6 >>
373 5 09/29 Test7 Testing message 7<<This is message number 7 >>
374 6 09/29 Test8 Testing message 8<<This is message number 8 >>
375 7 09/29 Test9 Testing message 9<<This is message number 9 >>
376 8 09/29 Test1 Testing message 1<<This is message number 1 >>
377 9 09/29 Test2 Testing message 2<<This is message number 2 >>
378 10 09/29 Test3 Testing message 3<<This is message number 3 >>
379 11 09/29 Test4 Testing message 4<<This is message number 4 >>
380 12 09/29 Test11 Re: common subject<<This is message number 11 >>
381 13 10/31 Test13 Re: common subject<<This is message number 13 >>
384 refile first +inbox; folder -pack >/dev/null
387 check "$expected" "$actual"
390 cat >"$expected" <<EOF
391 sortm: can't parse date field in message 14, continuing...
392 sortm: errors found, no messages sorted
395 sed -e 's/Sep//' $MH_TEST_DIR/Mail/inbox/7 > $MH_TEST_DIR/Mail/inbox/14
397 sortm -check >"$actual" 2>&1
399 check "$expected" "$actual"
401 cat >"$expected" <<EOF
402 1 09/28 Test12 common subject<<This is message number 12 >>
403 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
404 3 09/29 Test5 Testing message 5<<This is message number 5 >>
405 4 09/29 Test6 Testing message 6<<This is message number 6 >>
406 5 09/29 Test7 Testing message 7<<This is message number 7 >>
407 6 09/29 Test8 Testing message 8<<This is message number 8 >>
408 7 09/29 Test9 Testing message 9<<This is message number 9 >>
409 8 09/29 Test1 Testing message 1<<This is message number 1 >>
410 9 09/29 Test2 Testing message 2<<This is message number 2 >>
411 10 09/29 Test3 Testing message 3<<This is message number 3 >>
412 11 09/29 Test4 Testing message 4<<This is message number 4 >>
413 12 09/29 Test11 Re: common subject<<This is message number 11 >>
414 13 10/31 Test13 Re: common subject<<This is message number 13 >>
415 14 01/00 Test9 Testing message 9<<This is message number 9 >>
418 check "$expected" "$actual"
421 cat >"$expected" <<EOF
422 1 09/28 Test12 common subject<<This is message number 12 >>
423 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
424 3 09/29 Test5 Testing message 5<<This is message number 5 >>
425 4 09/29 Test6 Testing message 6<<This is message number 6 >>
426 5 09/29 Test7 Testing message 7<<This is message number 7 >>
427 6 09/29 Test8 Testing message 8<<This is message number 8 >>
428 7 09/29 Test9 Testing message 9<<This is message number 9 >>
429 8 09/29 Test1 Testing message 1<<This is message number 1 >>
430 9 09/29 Test2 Testing message 2<<This is message number 2 >>
431 10 09/29 Test3 Testing message 3<<This is message number 3 >>
432 11 09/29 Test4 Testing message 4<<This is message number 4 >>
433 12 09/29 Test11 Re: common subject<<This is message number 11 >>
434 13 10/31 Test13 Re: common subject<<This is message number 13 >>
435 14 01/00 Test9 Testing message 9<<This is message number 9 >>
438 sed -e 's/Sep//' $MH_TEST_DIR/Mail/inbox/7 > $MH_TEST_DIR/Mail/inbox/14
439 run_test 'sortm -check -nocheck' \
440 "sortm: can't parse date field in message 14, continuing..."
442 check "$expected" "$actual"