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]
39 sortm -help >"$actual" 2>&1
40 check "$expected" "$actual"
43 case `sortm -version` in
45 * ) echo "$0: sortm -v generated unexpected output" 1>&2
46 failed=`expr ${failed:-0} + 1`;;
49 cat >$MH_TEST_DIR/Mail/inbox/11 <<EOF || exit 1
50 From: Test11 <test11@example.com>
51 To: Some User <user@example.com>
52 Date: Fri, 29 Sep 2006 00:00:01
53 Alt-Date: Thu, 1 Sep 2005 00:00:00
54 Subject: Re: common subject
56 This is message number 11
59 cat >$MH_TEST_DIR/Mail/inbox/12 <<EOF || exit 1
60 From: Test12 <test12@example.com>
61 To: Some User <user@example.com>
62 Date: Thu, 28 Sep 2006 23:59:59
63 Alt-Date: Sat, 30 Sep 2006 00:00:00
64 Subject: common subject
66 This is message number 12
69 # check with no options
70 cat >"$expected" <<EOF
71 1 09/28 Test12 common subject<<This is message number 12 >>
72 2 09/29 Test1 Testing message 1<<This is message number 1 >>
73 3 09/29 Test2 Testing message 2<<This is message number 2 >>
74 4 09/29 Test3 Testing message 3<<This is message number 3 >>
75 5 09/29 Test4 Testing message 4<<This is message number 4 >>
76 6 09/29 Test5 Testing message 5<<This is message number 5 >>
77 7 09/29 Test6 Testing message 6<<This is message number 6 >>
78 8 09/29 Test7 Testing message 7<<This is message number 7 >>
79 9 09/29 Test8 Testing message 8<<This is message number 8 >>
80 10 09/29 Test9 Testing message 9<<This is message number 9 >>
81 11 09/29 Test10 Testing message 10<<This is message number 10 >>
82 12 09/29 Test11 Re: common subject<<This is message number 11 >>
87 check "$expected" "$actual"
90 cat >"$expected" <<EOF
91 1 09/28 Test12 common subject<<This is message number 12 >>
92 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
93 3 09/29 Test2 Testing message 2<<This is message number 2 >>
94 4 09/29 Test3 Testing message 3<<This is message number 3 >>
95 5 09/29 Test4 Testing message 4<<This is message number 4 >>
96 6 09/29 Test5 Testing message 5<<This is message number 5 >>
97 7 09/29 Test6 Testing message 6<<This is message number 6 >>
98 8 09/29 Test7 Testing message 7<<This is message number 7 >>
99 9 09/29 Test8 Testing message 8<<This is message number 8 >>
100 10 09/29 Test9 Testing message 9<<This is message number 9 >>
101 11 09/29 Test10 Testing message 10<<This is message number 10 >>
102 12 09/29 Test11 Re: common subject<<This is message number 11 >>
105 refile first +inbox; folder -pack >/dev/null
108 check "$expected" "$actual"
111 cat >"$expected" <<EOF
112 sorting by datefield date
113 renaming message chain from 12 to 1
114 message 11 becomes message 12
115 message 10 becomes message 11
116 message 9 becomes message 10
117 message 8 becomes message 9
118 message 7 becomes message 8
119 message 6 becomes message 7
120 message 5 becomes message 6
121 message 4 becomes message 5
122 message 3 becomes message 4
123 message 2 becomes message 3
124 message 1 becomes message 2
125 1 09/28 Test12 common subject<<This is message number 12 >>
126 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
127 3 09/29 Test2 Testing message 2<<This is message number 2 >>
128 4 09/29 Test3 Testing message 3<<This is message number 3 >>
129 5 09/29 Test4 Testing message 4<<This is message number 4 >>
130 6 09/29 Test5 Testing message 5<<This is message number 5 >>
131 7 09/29 Test6 Testing message 6<<This is message number 6 >>
132 8 09/29 Test7 Testing message 7<<This is message number 7 >>
133 9 09/29 Test8 Testing message 8<<This is message number 8 >>
134 10 09/29 Test9 Testing message 9<<This is message number 9 >>
135 11 09/29 Test10 Testing message 10<<This is message number 10 >>
136 12 09/29 Test11 Re: common subject<<This is message number 11 >>
139 refile first +inbox; folder -pack >/dev/null
140 sortm -verbose >"$actual"
142 check "$expected" "$actual"
145 cat >"$expected" <<EOF
146 1 09/28 Test12 common subject<<This is message number 12 >>
147 2+ 09/29 Test1 Testing message 1<<This is message number 1 >>
148 3 09/29 Test2 Testing message 2<<This is message number 2 >>
149 4 09/29 Test3 Testing message 3<<This is message number 3 >>
150 5 09/29 Test4 Testing message 4<<This is message number 4 >>
151 6 09/29 Test5 Testing message 5<<This is message number 5 >>
152 7 09/29 Test6 Testing message 6<<This is message number 6 >>
153 8 09/29 Test7 Testing message 7<<This is message number 7 >>
154 9 09/29 Test8 Testing message 8<<This is message number 8 >>
155 10 09/29 Test9 Testing message 9<<This is message number 9 >>
156 11 09/29 Test10 Testing message 10<<This is message number 10 >>
157 12 09/29 Test11 Re: common subject<<This is message number 11 >>
160 refile first +inbox; folder -pack >/dev/null
161 sortm -verbose -noverbose >"$actual"
163 check "$expected" "$actual"
166 cat >"$expected" <<EOF
167 1 09/28 Test12 common subject<<This is message number 12 >>
168 2 09/29 Test2 Testing message 2<<This is message number 2 >>
169 3 09/29 Test3 Testing message 3<<This is message number 3 >>
170 4 09/29 Test4 Testing message 4<<This is message number 4 >>
171 5 09/29 Test5 Testing message 5<<This is message number 5 >>
172 6 09/29 Test6 Testing message 6<<This is message number 6 >>
173 7 09/29 Test7 Testing message 7<<This is message number 7 >>
174 8 09/29 Test8 Testing message 8<<This is message number 8 >>
175 9 09/29 Test9 Testing message 9<<This is message number 9 >>
176 10 09/29 Test10 Testing message 10<<This is message number 10 >>
177 11 09/29 Test11 Re: common subject<<This is message number 11 >>
178 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
181 refile first +inbox; folder -pack >/dev/null
184 check "$expected" "$actual"
187 cat >"$expected" <<EOF
188 1 09/29 Test11 Re: common subject<<This is message number 11 >>
189 2 09/29 Test2 Testing message 2<<This is message number 2 >>
190 3 09/29 Test3 Testing message 3<<This is message number 3 >>
191 4 09/29 Test4 Testing message 4<<This is message number 4 >>
192 5 09/29 Test5 Testing message 5<<This is message number 5 >>
193 6 09/29 Test6 Testing message 6<<This is message number 6 >>
194 7 09/29 Test7 Testing message 7<<This is message number 7 >>
195 8 09/29 Test8 Testing message 8<<This is message number 8 >>
196 9 09/29 Test9 Testing message 9<<This is message number 9 >>
197 10 09/29 Test10 Testing message 10<<This is message number 10 >>
198 11 09/28 Test12 common subject<<This is message number 12 >>
199 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
202 sortm -datefield Alt-Date 1 11
204 check "$expected" "$actual"
206 # check -textfield subject (datefield major, subjects grouped)
207 cat >"$expected" <<EOF
208 1 09/28 Test12 common subject<<This is message number 12 >>
209 2 09/29 Test11 Re: common subject<<This is message number 11 >>
210 3 09/29 Test2 Testing message 2<<This is message number 2 >>
211 4 09/29 Test3 Testing message 3<<This is message number 3 >>
212 5 09/29 Test4 Testing message 4<<This is message number 4 >>
213 6 09/29 Test5 Testing message 5<<This is message number 5 >>
214 7 09/29 Test6 Testing message 6<<This is message number 6 >>
215 8 09/29 Test7 Testing message 7<<This is message number 7 >>
216 9 09/29 Test8 Testing message 8<<This is message number 8 >>
217 10 09/29 Test9 Testing message 9<<This is message number 9 >>
218 11 09/29 Test10 Testing message 10<<This is message number 10 >>
219 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
222 sortm -textfield subject
224 check "$expected" "$actual"
227 cat >"$expected" <<EOF
228 1 09/28 Test12 common subject<<This is message number 12 >>
229 2 09/29 Test11 Re: common subject<<This is message number 11 >>
230 3 09/29 Test2 Testing message 2<<This is message number 2 >>
231 4 09/29 Test3 Testing message 3<<This is message number 3 >>
232 5 09/29 Test4 Testing message 4<<This is message number 4 >>
233 6 09/29 Test5 Testing message 5<<This is message number 5 >>
234 7 09/29 Test6 Testing message 6<<This is message number 6 >>
235 8 09/29 Test7 Testing message 7<<This is message number 7 >>
236 9 09/29 Test8 Testing message 8<<This is message number 8 >>
237 10 09/29 Test9 Testing message 9<<This is message number 9 >>
238 11 09/29 Test10 Testing message 10<<This is message number 10 >>
239 12+ 09/29 Test1 Testing message 1<<This is message number 1 >>
242 sortm -textfield subject -limit 0 -nolimit
244 check "$expected" "$actual"
246 # check -textfield subject -limit 0 (subject sort)
247 cat >"$expected" <<EOF
248 1 09/29 Test11 Re: common subject<<This is message number 11 >>
249 2 09/28 Test12 common subject<<This is message number 12 >>
250 3 09/29 Test1 Testing message 1<<This is message number 1 >>
251 4 09/29 Test10 Testing message 10<<This is message number 10 >>
252 5 09/29 Test2 Testing message 2<<This is message number 2 >>
253 6 09/29 Test3 Testing message 3<<This is message number 3 >>
254 7 09/29 Test4 Testing message 4<<This is message number 4 >>
255 8 09/29 Test5 Testing message 5<<This is message number 5 >>
256 9 09/29 Test6 Testing message 6<<This is message number 6 >>
257 10 09/29 Test7 Testing message 7<<This is message number 7 >>
258 11 09/29 Test8 Testing message 8<<This is message number 8 >>
259 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
262 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
263 sortm -textfield subject -limit 0
265 check "$expected" "$actual"
267 # check -textfield -limit 0 (text sort)
268 cat >"$expected" <<EOF
269 1 09/29 Test10 Testing message 10<<This is message number 10 >>
270 2 09/29 Test11 Re: common subject<<This is message number 11 >>
271 3 09/28 Test12 common subject<<This is message number 12 >>
272 4 09/29 Test1 Testing message 1<<This is message number 1 >>
273 5 09/29 Test2 Testing message 2<<This is message number 2 >>
274 6 09/29 Test3 Testing message 3<<This is message number 3 >>
275 7 09/29 Test4 Testing message 4<<This is message number 4 >>
276 8 09/29 Test5 Testing message 5<<This is message number 5 >>
277 9 09/29 Test6 Testing message 6<<This is message number 6 >>
278 10 09/29 Test7 Testing message 7<<This is message number 7 >>
279 11 09/29 Test8 Testing message 8<<This is message number 8 >>
280 12+ 09/29 Test9 Testing message 9<<This is message number 9 >>
283 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
284 sortm -textfield from -limit 0
286 check "$expected" "$actual"
288 # check -textfield with finite -limit that doesn't cover message 13
289 cat >$MH_TEST_DIR/Mail/inbox/13 <<EOF || exit 1
290 From: Test13 <test13@example.com>
291 To: Some User <user@example.com>
292 Date: Tue, 31 Oct 2006 23:59:59
293 Subject: Re: common subject
295 This is message number 13
298 cat >"$expected" <<EOF
299 1 09/28 Test12 common subject<<This is message number 12 >>
300 2 09/29 Test11 Re: common subject<<This is message number 11 >>
301 3 09/29 Test5 Testing message 5<<This is message number 5 >>
302 4 09/29 Test6 Testing message 6<<This is message number 6 >>
303 5 09/29 Test7 Testing message 7<<This is message number 7 >>
304 6 09/29 Test8 Testing message 8<<This is message number 8 >>
305 7 09/29 Test9 Testing message 9<<This is message number 9 >>
306 8 09/29 Test1 Testing message 1<<This is message number 1 >>
307 9 09/29 Test2 Testing message 2<<This is message number 2 >>
308 10 09/29 Test3 Testing message 3<<This is message number 3 >>
309 11 09/29 Test4 Testing message 4<<This is message number 4 >>
310 12+ 09/29 Test10 Testing message 10<<This is message number 10 >>
311 13 10/31 Test13 Re: common subject<<This is message number 13 >>
314 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
315 sortm -textfield subject -limit 10
317 check "$expected" "$actual"
319 # check -textfield with finite -limit that does cover message 13
320 cat >"$expected" <<EOF
321 1 09/28 Test12 common subject<<This is message number 12 >>
322 2 09/29 Test11 Re: common subject<<This is message number 11 >>
323 3 10/31 Test13 Re: common subject<<This is message number 13 >>
324 4 09/29 Test1 Testing message 1<<This is message number 1 >>
325 5 09/29 Test2 Testing message 2<<This is message number 2 >>
326 6 09/29 Test3 Testing message 3<<This is message number 3 >>
327 7 09/29 Test4 Testing message 4<<This is message number 4 >>
328 8 09/29 Test10 Testing message 10<<This is message number 10 >>
329 9 09/29 Test5 Testing message 5<<This is message number 5 >>
330 10 09/29 Test6 Testing message 6<<This is message number 6 >>
331 11 09/29 Test7 Testing message 7<<This is message number 7 >>
332 12 09/29 Test8 Testing message 8<<This is message number 8 >>
333 13+ 09/29 Test9 Testing message 9<<This is message number 9 >>
336 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
337 sortm -textfield subject -limit 60
339 check "$expected" "$actual"
342 cat >"$expected" <<EOF
343 1 09/28 Test12 common subject<<This is message number 12 >>
344 2 09/29 Test10 Testing message 10<<This is message number 10 >>
345 3 09/29 Test5 Testing message 5<<This is message number 5 >>
346 4 09/29 Test6 Testing message 6<<This is message number 6 >>
347 5 09/29 Test7 Testing message 7<<This is message number 7 >>
348 6 09/29 Test8 Testing message 8<<This is message number 8 >>
349 7 09/29 Test9 Testing message 9<<This is message number 9 >>
350 8 09/29 Test1 Testing message 1<<This is message number 1 >>
351 9 09/29 Test2 Testing message 2<<This is message number 2 >>
352 10 09/29 Test3 Testing message 3<<This is message number 3 >>
353 11 09/29 Test4 Testing message 4<<This is message number 4 >>
354 12 09/29 Test11 Re: common subject<<This is message number 11 >>
355 13+ 10/31 Test13 Re: common subject<<This is message number 13 >>
358 refile 2-7 +inbox; refile 1 +inbox; folder -pack last >/dev/null
359 sortm -textfield subject -limit 60 -notextfield
361 check "$expected" "$actual"
364 run_test 'sortm -noall' 'sortm: must specify messages to sort with -noall'
367 cat >"$expected" <<EOF
368 1 09/28 Test12 common subject<<This is message number 12 >>
369 2+ 09/29 Test10 Testing message 10<<This is message number 10 >>
370 3 09/29 Test5 Testing message 5<<This is message number 5 >>
371 4 09/29 Test6 Testing message 6<<This is message number 6 >>
372 5 09/29 Test7 Testing message 7<<This is message number 7 >>
373 6 09/29 Test8 Testing message 8<<This is message number 8 >>
374 7 09/29 Test9 Testing message 9<<This is message number 9 >>
375 8 09/29 Test1 Testing message 1<<This is message number 1 >>
376 9 09/29 Test2 Testing message 2<<This is message number 2 >>
377 10 09/29 Test3 Testing message 3<<This is message number 3 >>
378 11 09/29 Test4 Testing message 4<<This is message number 4 >>
379 12 09/29 Test11 Re: common subject<<This is message number 11 >>
380 13 10/31 Test13 Re: common subject<<This is message number 13 >>
383 refile first +inbox; folder -pack >/dev/null
386 check "$expected" "$actual"