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 #### Skip nmh intro text.
41 run_prog sortm
-help | sed '/^$/Q' >"$actual" 2>&1
42 check
"$expected" "$actual"
45 case `sortm -version` in
47 * ) echo "$0: sortm -v generated unexpected output" 1>&2
48 failed
=`expr ${failed:-0} + 1`;;
51 cat >$MH_TEST_DIR/Mail
/inbox
/11 <<EOF || exit 1
52 From: Test11 <test11@example.com>
53 To: Some User <user@example.com>
54 Date: Fri, 29 Sep 2006 00:00:01
55 Alt-Date: Thu, 1 Sep 2005 00:00:00
56 Subject: Re: common subject
58 This is message number 11
61 cat >$MH_TEST_DIR/Mail
/inbox
/12 <<EOF || exit 1
62 From: Test12 <test12@example.com>
63 To: Some User <user@example.com>
64 Date: Thu, 28 Sep 2006 23:59:59
65 Alt-Date: Sat, 30 Sep 2006 00:00:00
66 Subject: common subject
68 This is message number 12
71 # check with no options
72 cat >"$expected" <<EOF
73 1 09/28 Test12 common subject<<This is message number 12 >>
74 2 09/29 Test1 Testing message 1<<This is message number 1 >>
75 3 09/29 Test2 Testing message 2<<This is message number 2 >>
76 4 09/29 Test3 Testing message 3<<This is message number 3 >>
77 5 09/29 Test4 Testing message 4<<This is message number 4 >>
78 6 09/29 Test5 Testing message 5<<This is message number 5 >>
79 7 09/29 Test6 Testing message 6<<This is message number 6 >>
80 8 09/29 Test7 Testing message 7<<This is message number 7 >>
81 9 09/29 Test8 Testing message 8<<This is message number 8 >>
82 10 09/29 Test9 Testing message 9<<This is message number 9 >>
83 11 09/29 Test10 Testing message 10<<This is message number 10 >>
84 12 09/29 Test11 Re: common subject<<This is message number 11 >>
88 scan
-width 80 >"$actual"
89 check
"$expected" "$actual"
92 cat >"$expected" <<EOF
93 1 09/28 Test12 common subject<<This is message number 12 >>
94 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
95 3 09/29 Test2 Testing message 2<<This is message number 2 >>
96 4 09/29 Test3 Testing message 3<<This is message number 3 >>
97 5 09/29 Test4 Testing message 4<<This is message number 4 >>
98 6 09/29 Test5 Testing message 5<<This is message number 5 >>
99 7 09/29 Test6 Testing message 6<<This is message number 6 >>
100 8 09/29 Test7 Testing message 7<<This is message number 7 >>
101 9 09/29 Test8 Testing message 8<<This is message number 8 >>
102 10 09/29 Test9 Testing message 9<<This is message number 9 >>
103 11 09/29 Test10 Testing message 10<<This is message number 10 >>
104 12 09/29 Test11 Re: common subject<<This is message number 11 >>
107 refile first
+inbox
; folder
-pack >/dev
/null
108 run_prog sortm
+inbox
109 scan
-width 80 >"$actual"
110 check
"$expected" "$actual"
113 cat >"$expected" <<EOF
114 sorting by datefield date
115 renaming message chain from 12 to 1
116 message 11 becomes message 12
117 message 10 becomes message 11
118 message 9 becomes message 10
119 message 8 becomes message 9
120 message 7 becomes message 8
121 message 6 becomes message 7
122 message 5 becomes message 6
123 message 4 becomes message 5
124 message 3 becomes message 4
125 message 2 becomes message 3
126 message 1 becomes message 2
127 1 09/28 Test12 common subject<<This is message number 12 >>
128 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
129 3 09/29 Test2 Testing message 2<<This is message number 2 >>
130 4 09/29 Test3 Testing message 3<<This is message number 3 >>
131 5 09/29 Test4 Testing message 4<<This is message number 4 >>
132 6 09/29 Test5 Testing message 5<<This is message number 5 >>
133 7 09/29 Test6 Testing message 6<<This is message number 6 >>
134 8 09/29 Test7 Testing message 7<<This is message number 7 >>
135 9 09/29 Test8 Testing message 8<<This is message number 8 >>
136 10 09/29 Test9 Testing message 9<<This is message number 9 >>
137 11 09/29 Test10 Testing message 10<<This is message number 10 >>
138 12 09/29 Test11 Re: common subject<<This is message number 11 >>
141 refile first
+inbox
; folder
-pack >/dev
/null
142 run_prog sortm
-verbose >"$actual"
143 scan
-width 80 >>"$actual"
144 check
"$expected" "$actual"
147 cat >"$expected" <<EOF
148 1 09/28 Test12 common subject<<This is message number 12 >>
149 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
150 3 09/29 Test2 Testing message 2<<This is message number 2 >>
151 4 09/29 Test3 Testing message 3<<This is message number 3 >>
152 5 09/29 Test4 Testing message 4<<This is message number 4 >>
153 6 09/29 Test5 Testing message 5<<This is message number 5 >>
154 7 09/29 Test6 Testing message 6<<This is message number 6 >>
155 8 09/29 Test7 Testing message 7<<This is message number 7 >>
156 9 09/29 Test8 Testing message 8<<This is message number 8 >>
157 10 09/29 Test9 Testing message 9<<This is message number 9 >>
158 11 09/29 Test10 Testing message 10<<This is message number 10 >>
159 12 09/29 Test11 Re: common subject<<This is message number 11 >>
162 refile first
+inbox
; folder
-pack >/dev
/null
163 run_prog sortm
-verbose -noverbose >"$actual"
164 scan
-width 80 >>"$actual"
165 check
"$expected" "$actual"
168 cat >"$expected" <<EOF
169 1 09/28 Test12 common subject<<This is message number 12 >>
170 2 09/29 Test2 Testing message 2<<This is message number 2 >>
171 3 09/29 Test3 Testing message 3<<This is message number 3 >>
172 4 09/29 Test4 Testing message 4<<This is message number 4 >>
173 5 09/29 Test5 Testing message 5<<This is message number 5 >>
174 6 09/29 Test6 Testing message 6<<This is message number 6 >>
175 7 09/29 Test7 Testing message 7<<This is message number 7 >>
176 8 09/29 Test8 Testing message 8<<This is message number 8 >>
177 9 09/29 Test9 Testing message 9<<This is message number 9 >>
178 10 09/29 Test10 Testing message 10<<This is message number 10 >>
179 11 09/29 Test11 Re: common subject<<This is message number 11 >>
180 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
183 refile first
+inbox
; folder
-pack >/dev
/null
184 run_prog sortm first last
185 scan
-width 80 >"$actual"
186 check
"$expected" "$actual"
189 cat >"$expected" <<EOF
190 1 09/29 Test11 Re: common subject<<This is message number 11 >>
191 2 09/29 Test2 Testing message 2<<This is message number 2 >>
192 3 09/29 Test3 Testing message 3<<This is message number 3 >>
193 4 09/29 Test4 Testing message 4<<This is message number 4 >>
194 5 09/29 Test5 Testing message 5<<This is message number 5 >>
195 6 09/29 Test6 Testing message 6<<This is message number 6 >>
196 7 09/29 Test7 Testing message 7<<This is message number 7 >>
197 8 09/29 Test8 Testing message 8<<This is message number 8 >>
198 9 09/29 Test9 Testing message 9<<This is message number 9 >>
199 10 09/29 Test10 Testing message 10<<This is message number 10 >>
200 11 09/28 Test12 common subject<<This is message number 12 >>
201 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
204 run_prog sortm
-datefield Alt
-Date 1 11
205 scan
-width 80 >"$actual"
206 check
"$expected" "$actual"
208 # check -textfield subject (datefield major, subjects grouped)
209 cat >"$expected" <<EOF
210 1 09/28 Test12 common subject<<This is message number 12 >>
211 2 09/29 Test11 Re: common subject<<This is message number 11 >>
212 3 09/29 Test2 Testing message 2<<This is message number 2 >>
213 4 09/29 Test3 Testing message 3<<This is message number 3 >>
214 5 09/29 Test4 Testing message 4<<This is message number 4 >>
215 6 09/29 Test5 Testing message 5<<This is message number 5 >>
216 7 09/29 Test6 Testing message 6<<This is message number 6 >>
217 8 09/29 Test7 Testing message 7<<This is message number 7 >>
218 9 09/29 Test8 Testing message 8<<This is message number 8 >>
219 10 09/29 Test9 Testing message 9<<This is message number 9 >>
220 11 09/29 Test10 Testing message 10<<This is message number 10 >>
221 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
224 run_prog sortm
-textfield subject
225 scan
-width 80 >"$actual"
226 check
"$expected" "$actual"
229 cat >"$expected" <<EOF
230 1 09/28 Test12 common subject<<This is message number 12 >>
231 2 09/29 Test11 Re: common subject<<This is message number 11 >>
232 3 09/29 Test2 Testing message 2<<This is message number 2 >>
233 4 09/29 Test3 Testing message 3<<This is message number 3 >>
234 5 09/29 Test4 Testing message 4<<This is message number 4 >>
235 6 09/29 Test5 Testing message 5<<This is message number 5 >>
236 7 09/29 Test6 Testing message 6<<This is message number 6 >>
237 8 09/29 Test7 Testing message 7<<This is message number 7 >>
238 9 09/29 Test8 Testing message 8<<This is message number 8 >>
239 10 09/29 Test9 Testing message 9<<This is message number 9 >>
240 11 09/29 Test10 Testing message 10<<This is message number 10 >>
241 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
244 run_prog sortm
-textfield subject
-limit 0 -nolimit
245 scan
-width 80 >"$actual"
246 check
"$expected" "$actual"
248 # check -textfield subject -limit 0 (subject sort)
249 cat >"$expected" <<EOF
250 1 09/29 Test11 Re: common subject<<This is message number 11 >>
251 2 09/28 Test12 common subject<<This is message number 12 >>
252 3 09/29 Test1 Testing message 1<<This is message number 1 >>
253 4 09/29 Test10 Testing message 10<<This is message number 10 >>
254 5 09/29 Test2 Testing message 2<<This is message number 2 >>
255 6 09/29 Test3 Testing message 3<<This is message number 3 >>
256 7 09/29 Test4 Testing message 4<<This is message number 4 >>
257 8 09/29 Test5 Testing message 5<<This is message number 5 >>
258 9 09/29 Test6 Testing message 6<<This is message number 6 >>
259 10 09/29 Test7 Testing message 7<<This is message number 7 >>
260 11 09/29 Test8 Testing message 8<<This is message number 8 >>
261 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
264 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
265 run_prog sortm
-textfield subject
-limit 0
266 scan
-width 80 >"$actual"
267 check
"$expected" "$actual"
269 # check -textfield -limit 0 (text sort)
270 cat >"$expected" <<EOF
271 1 09/29 Test10 Testing message 10<<This is message number 10 >>
272 2 09/29 Test11 Re: common subject<<This is message number 11 >>
273 3 09/28 Test12 common subject<<This is message number 12 >>
274 4 09/29 Test1 Testing message 1<<This is message number 1 >>
275 5 09/29 Test2 Testing message 2<<This is message number 2 >>
276 6 09/29 Test3 Testing message 3<<This is message number 3 >>
277 7 09/29 Test4 Testing message 4<<This is message number 4 >>
278 8 09/29 Test5 Testing message 5<<This is message number 5 >>
279 9 09/29 Test6 Testing message 6<<This is message number 6 >>
280 10 09/29 Test7 Testing message 7<<This is message number 7 >>
281 11 09/29 Test8 Testing message 8<<This is message number 8 >>
282 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
285 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
286 run_prog sortm
-textfield from
-limit 0
287 scan
-width 80 >"$actual"
288 check
"$expected" "$actual"
290 # check -textfield with finite -limit that doesn't cover message 13
291 cat >$MH_TEST_DIR/Mail
/inbox
/13 <<EOF || exit 1
292 From: Test13 <test13@example.com>
293 To: Some User <user@example.com>
294 Date: Tue, 31 Oct 2006 23:59:59
295 Subject: Re: common subject
297 This is message number 13
300 cat >"$expected" <<EOF
301 1 09/28 Test12 common subject<<This is message number 12 >>
302 2 09/29 Test11 Re: common subject<<This is message number 11 >>
303 3 09/29 Test5 Testing message 5<<This is message number 5 >>
304 4 09/29 Test6 Testing message 6<<This is message number 6 >>
305 5 09/29 Test7 Testing message 7<<This is message number 7 >>
306 6 09/29 Test8 Testing message 8<<This is message number 8 >>
307 7 09/29 Test9 Testing message 9<<This is message number 9 >>
308 8 09/29 Test1 Testing message 1<<This is message number 1 >>
309 9 09/29 Test2 Testing message 2<<This is message number 2 >>
310 10 09/29 Test3 Testing message 3<<This is message number 3 >>
311 11 09/29 Test4 Testing message 4<<This is message number 4 >>
312 12+ 09/29 Test10 Testing message 10<<This is message number 10 >>
313 13 10/31 Test13 Re: common subject<<This is message number 13 >>
316 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
317 run_prog sortm
-textfield subject
-limit 10
318 scan
-width 80 >"$actual"
319 check
"$expected" "$actual"
321 # check -textfield with finite -limit that does cover message 13
322 cat >"$expected" <<EOF
323 1 09/28 Test12 common subject<<This is message number 12 >>
324 2 09/29 Test11 Re: common subject<<This is message number 11 >>
325 3 10/31 Test13 Re: common subject<<This is message number 13 >>
326 4 09/29 Test1 Testing message 1<<This is message number 1 >>
327 5 09/29 Test2 Testing message 2<<This is message number 2 >>
328 6 09/29 Test3 Testing message 3<<This is message number 3 >>
329 7 09/29 Test4 Testing message 4<<This is message number 4 >>
330 8 09/29 Test10 Testing message 10<<This is message number 10 >>
331 9 09/29 Test5 Testing message 5<<This is message number 5 >>
332 10 09/29 Test6 Testing message 6<<This is message number 6 >>
333 11 09/29 Test7 Testing message 7<<This is message number 7 >>
334 12 09/29 Test8 Testing message 8<<This is message number 8 >>
335 13+ 09/29 Test9 Testing message 9<<This is message number 9 >>
338 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
339 run_prog sortm
-textfield subject
-limit 60
340 scan
-width 80 >"$actual"
341 check
"$expected" "$actual"
344 cat >"$expected" <<EOF
345 1 09/28 Test12 common subject<<This is message number 12 >>
346 2 09/29 Test10 Testing message 10<<This is message number 10 >>
347 3 09/29 Test5 Testing message 5<<This is message number 5 >>
348 4 09/29 Test6 Testing message 6<<This is message number 6 >>
349 5 09/29 Test7 Testing message 7<<This is message number 7 >>
350 6 09/29 Test8 Testing message 8<<This is message number 8 >>
351 7 09/29 Test9 Testing message 9<<This is message number 9 >>
352 8 09/29 Test1 Testing message 1<<This is message number 1 >>
353 9 09/29 Test2 Testing message 2<<This is message number 2 >>
354 10 09/29 Test3 Testing message 3<<This is message number 3 >>
355 11 09/29 Test4 Testing message 4<<This is message number 4 >>
356 12 09/29 Test11 Re: common subject<<This is message number 11 >>
357 13+ 10/31 Test13 Re: common subject<<This is message number 13 >>
360 refile
2-7 +inbox
; refile
1 +inbox
; folder
-pack last
>/dev
/null
361 run_prog sortm
-textfield subject
-limit 60 -notextfield
362 scan
-width 80 >"$actual"
363 check
"$expected" "$actual"
366 run_test
'sortm -noall' 'sortm: must specify messages to sort with -noall'
369 cat >"$expected" <<EOF
370 1 09/28 Test12 common subject<<This is message number 12 >>
371 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
372 3 09/29 Test5 Testing message 5<<This is message number 5 >>
373 4 09/29 Test6 Testing message 6<<This is message number 6 >>
374 5 09/29 Test7 Testing message 7<<This is message number 7 >>
375 6 09/29 Test8 Testing message 8<<This is message number 8 >>
376 7 09/29 Test9 Testing message 9<<This is message number 9 >>
377 8 09/29 Test1 Testing message 1<<This is message number 1 >>
378 9 09/29 Test2 Testing message 2<<This is message number 2 >>
379 10 09/29 Test3 Testing message 3<<This is message number 3 >>
380 11 09/29 Test4 Testing message 4<<This is message number 4 >>
381 12 09/29 Test11 Re: common subject<<This is message number 11 >>
382 13 10/31 Test13 Re: common subject<<This is message number 13 >>
385 refile first
+inbox
; folder
-pack >/dev
/null
386 run_prog sortm
-noall -all
387 scan
-width 80 >"$actual"
388 check
"$expected" "$actual"
391 cat >"$expected" <<EOF
392 sortm: can't parse date field in message 14, will use file modification time
393 sortm: errors found, no messages sorted
396 sed -e 's/Sep//' $MH_TEST_DIR/Mail
/inbox
/7 > $MH_TEST_DIR/Mail
/inbox
/14
398 run_prog sortm
-check >"$actual" 2>&1
400 check
"$expected" "$actual"
402 cat >"$expected" <<EOF
403 1 09/28 Test12 common subject<<This is message number 12 >>
404 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
405 3 09/29 Test5 Testing message 5<<This is message number 5 >>
406 4 09/29 Test6 Testing message 6<<This is message number 6 >>
407 5 09/29 Test7 Testing message 7<<This is message number 7 >>
408 6 09/29 Test8 Testing message 8<<This is message number 8 >>
409 7 09/29 Test9 Testing message 9<<This is message number 9 >>
410 8 09/29 Test1 Testing message 1<<This is message number 1 >>
411 9 09/29 Test2 Testing message 2<<This is message number 2 >>
412 10 09/29 Test3 Testing message 3<<This is message number 3 >>
413 11 09/29 Test4 Testing message 4<<This is message number 4 >>
414 12 09/29 Test11 Re: common subject<<This is message number 11 >>
415 13 10/31 Test13 Re: common subject<<This is message number 13 >>
416 14 01/00 Test9 Testing message 9<<This is message number 9 >>
418 scan
-width 80 >"$actual"
419 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 >>
439 sed -e 's/Sep//' $MH_TEST_DIR/Mail
/inbox
/7 > $MH_TEST_DIR/Mail
/inbox
/14
440 run_test
'sortm -check -nocheck' \
441 "sortm: can't parse date field in message 14, will use file \
443 scan
-width 80 >"$actual"
444 check
"$expected" "$actual"