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 check_exit
'-eq 1' sortm
-
21 expected
=$MH_TEST_DIR/$$.expected
22 actual
=$MH_TEST_DIR/$$.actual
28 cat >"$expected" <<EOF
29 Usage: sortm [+folder] [msgs] [switches]
43 #### Skip nmh intro text.
44 run_prog sortm
-help 2>&1 | sed '/^$/,$d' >"$actual"
45 check
"$expected" "$actual"
49 case `sortm -version` in
51 * ) echo "$0: sortm -v generated unexpected output" 1>&2
52 failed
=`expr ${failed:-0} + 1`;;
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
62 This is message number 11
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
72 This is message number 12
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 >>
93 scan
-width 80 >"$actual"
94 check
"$expected" "$actual"
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 >>
113 refile first
+inbox
; folder
-pack >/dev
/null
114 run_prog sortm
+inbox
115 scan
-width 80 >"$actual"
116 check
"$expected" "$actual"
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 >>
148 refile first
+inbox
; folder
-pack >/dev
/null
149 run_prog sortm
-verbose >"$actual"
150 scan
-width 80 >>"$actual"
151 check
"$expected" "$actual"
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 >>
170 refile first
+inbox
; folder
-pack >/dev
/null
171 run_prog sortm
-verbose -noverbose >"$actual"
172 scan
-width 80 >>"$actual"
173 check
"$expected" "$actual"
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 >>
192 refile first
+inbox
; folder
-pack >/dev
/null
193 run_prog sortm first last
194 scan
-width 80 >"$actual"
195 check
"$expected" "$actual"
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 >>
214 run_prog sortm
-datefield Alt-Date
1 11
215 scan
-width 80 >"$actual"
216 check
"$expected" "$actual"
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 >>
235 run_prog sortm
-textfield subject
236 scan
-width 80 >"$actual"
237 check
"$expected" "$actual"
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 >>
256 run_prog sortm
-textfield subject
-limit 0 -nolimit
257 scan
-width 80 >"$actual"
258 check
"$expected" "$actual"
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 >>
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"
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 >>
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"
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
312 This is message number 13
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 >>
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"
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 >>
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"
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 >>
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"
384 run_test
'sortm -noall' 'sortm: must specify messages to sort with -noall'
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 >>
404 refile first
+inbox
; folder
-pack >/dev
/null
405 run_prog sortm
-noall -all
406 scan
-width 80 >"$actual"
407 check
"$expected" "$actual"
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
416 sed -e 's/Sep//' $MH_TEST_DIR/Mail
/inbox
/7 > $MH_TEST_DIR/Mail
/inbox
/14
418 run_prog sortm
-check >"$actual" 2>&1
420 check
"$expected" "$actual"
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 >>
438 scan
-width 80 >"$actual"
439 check
"$expected" "$actual"
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 >>
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 \
464 scan
-width 80 >"$actual"
465 check
"$expected" "$actual"