daee94b3fc0500bcf612d342c15ad92a2baa7c09
[mmh] / test / folder / test-sortm
1 #!/bin/sh
2 ######################################################
3 #
4 # Test sortm
5 #
6 ######################################################
7
8 set -e
9
10 if test -z "${MH_OBJ_DIR}"; then
11     srcdir=`dirname $0`/../..
12     MH_OBJ_DIR=`cd $srcdir && pwd`; export MH_OBJ_DIR
13 fi
14
15 . "$MH_OBJ_DIR/test/common.sh"
16
17 setup_test
18
19 expected=$MH_TEST_DIR/$$.expected
20 actual=$MH_TEST_DIR/$$.actual
21
22 cd $MH_TEST_DIR
23
24 # check -help
25 cat >$expected <<EOF
26 Usage: sortm [+folder] [msgs] [switches]
27   switches are:
28   -datefield field
29   -textfield field
30   -notextfield
31   -limit days
32   -nolimit
33   -[no]verbose
34   -version
35   -help
36 EOF
37
38 sortm -help >$actual 2>&1
39 check $expected $actual
40
41 # check -version
42 case `sortm -version` in
43   sortm\ --*) ;;
44   *       ) echo "$0: sortm -v generated unexpected output" 1>&2
45             failed=`expr ${failed:-0} + 1`;;
46 esac
47
48 cat > $MH_TEST_DIR/Mail/inbox/11 <<EOF || exit 1
49 From: Test11 <test11@example.com>
50 To: Some User <user@example.com>
51 Date: Fri, 29 Sep 2006 00:00:01
52 Alt-Date: Thu,  1 Sep 2005 00:00:00
53 Subject: Re: common subject
54
55 This is message number 11
56 EOF
57
58 cat > $MH_TEST_DIR/Mail/inbox/12 <<EOF || exit 1
59 From: Test12 <test12@example.com>
60 To: Some User <user@example.com>
61 Date: Thu, 28 Sep 2006 23:59:59
62 Alt-Date: Sat, 30 Sep 2006 00:00:00
63 Subject: common subject
64
65 This is message number 12
66 EOF
67
68 # check with no options
69 cat >$expected <<EOF
70    1  09/28 Test12             common subject<<This is message number 12 >>
71    2  09/29 Test1              Testing message 1<<This is message number 1 >>
72    3  09/29 Test2              Testing message 2<<This is message number 2 >>
73    4  09/29 Test3              Testing message 3<<This is message number 3 >>
74    5  09/29 Test4              Testing message 4<<This is message number 4 >>
75    6  09/29 Test5              Testing message 5<<This is message number 5 >>
76    7  09/29 Test6              Testing message 6<<This is message number 6 >>
77    8  09/29 Test7              Testing message 7<<This is message number 7 >>
78    9  09/29 Test8              Testing message 8<<This is message number 8 >>
79   10  09/29 Test9              Testing message 9<<This is message number 9 >>
80   11  09/29 Test10             Testing message 10<<This is message number 10 >>
81   12  09/29 Test11             Re: common subject<<This is message number 11 >>
82 EOF
83
84 sortm
85 scan > $actual
86 check $expected $actual
87
88 # check +folder
89 cat >$expected <<EOF
90    1  09/28 Test12             common subject<<This is message number 12 >>
91    2+ 09/29 Test1              Testing message 1<<This is message number 1 >>
92    3  09/29 Test2              Testing message 2<<This is message number 2 >>
93    4  09/29 Test3              Testing message 3<<This is message number 3 >>
94    5  09/29 Test4              Testing message 4<<This is message number 4 >>
95    6  09/29 Test5              Testing message 5<<This is message number 5 >>
96    7  09/29 Test6              Testing message 6<<This is message number 6 >>
97    8  09/29 Test7              Testing message 7<<This is message number 7 >>
98    9  09/29 Test8              Testing message 8<<This is message number 8 >>
99   10  09/29 Test9              Testing message 9<<This is message number 9 >>
100   11  09/29 Test10             Testing message 10<<This is message number 10 >>
101   12  09/29 Test11             Re: common subject<<This is message number 11 >>
102 EOF
103
104 refile first +inbox
105 folder -pack > /dev/null
106 sortm +inbox
107 scan > $actual
108 check $expected $actual
109
110 # check -verbose
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 >>
137 EOF
138
139 refile first +inbox
140 folder -pack > /dev/null
141 sortm -verbose >$actual
142 scan >> $actual
143 check $expected $actual
144
145 # check -noverbose
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 >>
159 EOF
160
161 refile first +inbox
162 folder -pack > /dev/null
163 sortm -verbose -noverbose >$actual
164 scan >> $actual
165 check $expected $actual
166
167 # check msgs
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 >>
181 EOF
182
183 refile first +inbox
184 folder -pack > /dev/null
185 sortm first last
186 scan > $actual
187 check $expected $actual
188
189 # check -datefield
190 cat >$expected <<EOF
191    1  09/29 Test11             Re: common subject<<This is message number 11 >>
192    2  09/29 Test2              Testing message 2<<This is message number 2 >>
193    3  09/29 Test3              Testing message 3<<This is message number 3 >>
194    4  09/29 Test4              Testing message 4<<This is message number 4 >>
195    5  09/29 Test5              Testing message 5<<This is message number 5 >>
196    6  09/29 Test6              Testing message 6<<This is message number 6 >>
197    7  09/29 Test7              Testing message 7<<This is message number 7 >>
198    8  09/29 Test8              Testing message 8<<This is message number 8 >>
199    9  09/29 Test9              Testing message 9<<This is message number 9 >>
200   10  09/29 Test10             Testing message 10<<This is message number 10 >>
201   11  09/28 Test12             common subject<<This is message number 12 >>
202   12+ 09/29 Test1              Testing message 1<<This is message number 1 >>
203 EOF
204
205 sortm -datefield Alt-Date 1 11
206 scan > $actual
207 check $expected $actual
208
209 # check -textfield subject (datefield major, subjects grouped)
210 cat >$expected <<EOF
211    1  09/28 Test12             common subject<<This is message number 12 >>
212    2  09/29 Test11             Re: common subject<<This is message number 11 >>
213    3  09/29 Test2              Testing message 2<<This is message number 2 >>
214    4  09/29 Test3              Testing message 3<<This is message number 3 >>
215    5  09/29 Test4              Testing message 4<<This is message number 4 >>
216    6  09/29 Test5              Testing message 5<<This is message number 5 >>
217    7  09/29 Test6              Testing message 6<<This is message number 6 >>
218    8  09/29 Test7              Testing message 7<<This is message number 7 >>
219    9  09/29 Test8              Testing message 8<<This is message number 8 >>
220   10  09/29 Test9              Testing message 9<<This is message number 9 >>
221   11  09/29 Test10             Testing message 10<<This is message number 10 >>
222   12+ 09/29 Test1              Testing message 1<<This is message number 1 >>
223 EOF
224
225 sortm -textfield subject
226 scan > $actual
227 check $expected $actual
228
229 # check -nolimit
230 cat >$expected <<EOF
231    1  09/28 Test12             common subject<<This is message number 12 >>
232    2  09/29 Test11             Re: common subject<<This is message number 11 >>
233    3  09/29 Test2              Testing message 2<<This is message number 2 >>
234    4  09/29 Test3              Testing message 3<<This is message number 3 >>
235    5  09/29 Test4              Testing message 4<<This is message number 4 >>
236    6  09/29 Test5              Testing message 5<<This is message number 5 >>
237    7  09/29 Test6              Testing message 6<<This is message number 6 >>
238    8  09/29 Test7              Testing message 7<<This is message number 7 >>
239    9  09/29 Test8              Testing message 8<<This is message number 8 >>
240   10  09/29 Test9              Testing message 9<<This is message number 9 >>
241   11  09/29 Test10             Testing message 10<<This is message number 10 >>
242   12+ 09/29 Test1              Testing message 1<<This is message number 1 >>
243 EOF
244
245 sortm -textfield subject -limit 0 -nolimit
246 scan > $actual
247 check $expected $actual
248
249 # check -textfield subject -limit 0 (subject sort)
250 cat >$expected <<EOF
251    1  09/29 Test11             Re: common subject<<This is message number 11 >>
252    2  09/28 Test12             common subject<<This is message number 12 >>
253    3  09/29 Test1              Testing message 1<<This is message number 1 >>
254    4  09/29 Test10             Testing message 10<<This is message number 10 >>
255    5  09/29 Test2              Testing message 2<<This is message number 2 >>
256    6  09/29 Test3              Testing message 3<<This is message number 3 >>
257    7  09/29 Test4              Testing message 4<<This is message number 4 >>
258    8  09/29 Test5              Testing message 5<<This is message number 5 >>
259    9  09/29 Test6              Testing message 6<<This is message number 6 >>
260   10  09/29 Test7              Testing message 7<<This is message number 7 >>
261   11  09/29 Test8              Testing message 8<<This is message number 8 >>
262   12+ 09/29 Test9              Testing message 9<<This is message number 9 >>
263 EOF
264
265 refile 2-7 +inbox; refile 1 +inbox; folder -pa last >/dev/null
266 sortm -textfield subject -limit 0
267 scan > $actual
268 check $expected $actual
269
270 # check -textfield -limit 0 (text sort)
271 cat >$expected <<EOF
272    1  09/29 Test10             Testing message 10<<This is message number 10 >>
273    2  09/29 Test11             Re: common subject<<This is message number 11 >>
274    3  09/28 Test12             common subject<<This is message number 12 >>
275    4  09/29 Test1              Testing message 1<<This is message number 1 >>
276    5  09/29 Test2              Testing message 2<<This is message number 2 >>
277    6  09/29 Test3              Testing message 3<<This is message number 3 >>
278    7  09/29 Test4              Testing message 4<<This is message number 4 >>
279    8  09/29 Test5              Testing message 5<<This is message number 5 >>
280    9  09/29 Test6              Testing message 6<<This is message number 6 >>
281   10  09/29 Test7              Testing message 7<<This is message number 7 >>
282   11  09/29 Test8              Testing message 8<<This is message number 8 >>
283   12+ 09/29 Test9              Testing message 9<<This is message number 9 >>
284 EOF
285
286 refile 2-7 +inbox; refile 1 +inbox; folder -pa last >/dev/null
287 sortm -textfield from -limit 0
288 scan > $actual
289 check $expected $actual
290
291 # check -textfield with finite -limit that doesn't cover message 13
292 cat > $MH_TEST_DIR/Mail/inbox/13 <<EOF || exit 1
293 From: Test13 <test13@example.com>
294 To: Some User <user@example.com>
295 Date: Tue, 31 Oct 2006 23:59:59
296 Subject: Re: common subject
297
298 This is message number 13
299 EOF
300
301 cat >$expected <<EOF
302    1  09/28 Test12             common subject<<This is message number 12 >>
303    2  09/29 Test11             Re: common subject<<This is message number 11 >>
304    3  09/29 Test5              Testing message 5<<This is message number 5 >>
305    4  09/29 Test6              Testing message 6<<This is message number 6 >>
306    5  09/29 Test7              Testing message 7<<This is message number 7 >>
307    6  09/29 Test8              Testing message 8<<This is message number 8 >>
308    7  09/29 Test9              Testing message 9<<This is message number 9 >>
309    8  09/29 Test1              Testing message 1<<This is message number 1 >>
310    9  09/29 Test2              Testing message 2<<This is message number 2 >>
311   10  09/29 Test3              Testing message 3<<This is message number 3 >>
312   11  09/29 Test4              Testing message 4<<This is message number 4 >>
313   12+ 09/29 Test10             Testing message 10<<This is message number 10 >>
314   13  10/31 Test13             Re: common subject<<This is message number 13 >>
315 EOF
316
317 refile 2-7 +inbox; refile 1 +inbox; folder -pa last >/dev/null
318 sortm -textfield subject -limit 10
319 scan > $actual
320 check $expected $actual
321
322 # check -textfield with finite -limit that does cover message 13
323 cat >$expected <<EOF
324    1  09/28 Test12             common subject<<This is message number 12 >>
325    2  09/29 Test11             Re: common subject<<This is message number 11 >>
326    3  10/31 Test13             Re: common subject<<This is message number 13 >>
327    4  09/29 Test1              Testing message 1<<This is message number 1 >>
328    5  09/29 Test2              Testing message 2<<This is message number 2 >>
329    6  09/29 Test3              Testing message 3<<This is message number 3 >>
330    7  09/29 Test4              Testing message 4<<This is message number 4 >>
331    8  09/29 Test10             Testing message 10<<This is message number 10 >>
332    9  09/29 Test5              Testing message 5<<This is message number 5 >>
333   10  09/29 Test6              Testing message 6<<This is message number 6 >>
334   11  09/29 Test7              Testing message 7<<This is message number 7 >>
335   12  09/29 Test8              Testing message 8<<This is message number 8 >>
336   13+ 09/29 Test9              Testing message 9<<This is message number 9 >>
337 EOF
338
339 refile 2-7 +inbox; refile 1 +inbox; folder -pa last >/dev/null
340 sortm -textfield subject -limit 60
341 scan > $actual
342 check $expected $actual
343
344 # check -notextfield
345 cat >$expected <<EOF
346    1  09/28 Test12             common subject<<This is message number 12 >>
347    2  09/29 Test10             Testing message 10<<This is message number 10 >>
348    3  09/29 Test5              Testing message 5<<This is message number 5 >>
349    4  09/29 Test6              Testing message 6<<This is message number 6 >>
350    5  09/29 Test7              Testing message 7<<This is message number 7 >>
351    6  09/29 Test8              Testing message 8<<This is message number 8 >>
352    7  09/29 Test9              Testing message 9<<This is message number 9 >>
353    8  09/29 Test1              Testing message 1<<This is message number 1 >>
354    9  09/29 Test2              Testing message 2<<This is message number 2 >>
355   10  09/29 Test3              Testing message 3<<This is message number 3 >>
356   11  09/29 Test4              Testing message 4<<This is message number 4 >>
357   12  09/29 Test11             Re: common subject<<This is message number 11 >>
358   13+ 10/31 Test13             Re: common subject<<This is message number 13 >>
359 EOF
360
361 refile 2-7 +inbox; refile 1 +inbox; folder -pa last >/dev/null
362 sortm -textfield subject -limit 60 -notextfield
363 scan > $actual
364 check $expected $actual
365
366 exit $failed