Re-work the test suite so it now works with Automake (via "make check").
[mmh] / test / new / test-basic
1 #!/bin/sh
2
3 if [ -z "${MH_TEST_COMMON}" ]; then
4     echo "MH_TEST_COMMON not set; try running via 'make check'"
5 fi
6
7 . ${MH_TEST_COMMON}
8
9 setup_test
10 # TODO: Move to a common file tests can source; need more framework...
11 failed=0
12 check() {
13     diff -u $expected $actual
14     if [ $? -ne 0 ]; then
15         failed=$((failed + 1))
16     fi
17 }
18
19 folders=$MH_TEST_DIR/Mail/.folders
20
21 expected=$MH_TEST_DIR/$$.expected
22 actual=$MH_TEST_DIR/$$.actual
23
24 # make second folder
25 cp -r $MH_TEST_DIR/Mail/inbox $MH_TEST_DIR/Mail/foo1
26 cp -r $MH_TEST_DIR/Mail/inbox $MH_TEST_DIR/Mail/foo2
27 # but only list inbox and foo2 in .folders, and sorted differently
28 cat > $folders <<EOF
29 inbox
30 foo2
31 EOF
32
33 # test with no sequence
34 cat > $expected <<EOF
35 new: must specify sequences or set Unseen-Sequence
36 EOF
37 new > $actual 2>&1
38 check
39
40 # test with no desired messages
41 cat > $expected <<EOF
42  total      0.
43 EOF
44 new aseq > $actual 2>&1
45 check
46 new -folders $folders aseq > $actual 2>&1
47 check
48
49 # test fnext/fprev with no desired messages
50 cat /dev/null > $expected
51 fnext aseq > $actual 2>&1
52 check
53 fprev aseq > $actual 2>&1
54 check
55
56 # add 1 desired message in each folder
57 echo 'aseq: 1' > $MH_TEST_DIR/Mail/inbox/.mh_sequences
58 echo 'aseq: 1' > $MH_TEST_DIR/Mail/foo1/.mh_sequences
59 echo 'aseq: 1' > $MH_TEST_DIR/Mail/foo2/.mh_sequences
60
61 # test with all folders
62 cat > $expected <<EOF
63 foo1       1.  1
64 foo2       1.  1
65 inbox      1.* 1
66  total      3.
67 EOF
68 new aseq > $actual 2>&1
69 check
70
71 # test with .folders
72 cat > $expected <<EOF
73 inbox      1.* 1
74 foo2       1.  1
75  total      2.
76 EOF
77 new -folders $folders aseq > $actual 2>&1
78 check
79
80 # add 2 desired messages to another sequence in each folder
81 echo 'bseq: 3-4' >> $MH_TEST_DIR/Mail/inbox/.mh_sequences
82 echo 'bseq: 3-4' >> $MH_TEST_DIR/Mail/foo1/.mh_sequences
83 echo 'bseq: 3-4' >> $MH_TEST_DIR/Mail/foo2/.mh_sequences
84
85 # test listing aseq and bseq
86 cat > $expected <<EOF
87 foo1       3.  1 3-4
88 foo2       3.  1 3-4
89 inbox      3.* 1 3-4
90  total      9.
91 EOF
92 new aseq bseq > $actual 2>&1
93 check
94
95 # set aseq bseq as unseen
96 echo 'Unseen-Sequence: aseq bseq' >> $MH
97 new > $actual 2>&1
98 check
99
100 # test unseen
101 cat > $expected <<EOF
102
103 3 aseq bseq messages in foo1
104    1  09/29 Test1              Testing message 1<<This is message number 1 >>
105    3  09/29 Test3              Testing message 3<<This is message number 3 >>
106    4  09/29 Test4              Testing message 4<<This is message number 4 >>
107
108 3 aseq bseq messages in foo2
109    1  09/29 Test1              Testing message 1<<This is message number 1 >>
110    3  09/29 Test3              Testing message 3<<This is message number 3 >>
111    4  09/29 Test4              Testing message 4<<This is message number 4 >>
112
113 3 aseq bseq messages in inbox (*: current folder)
114    1  09/29 Test1              Testing message 1<<This is message number 1 >>
115    3  09/29 Test3              Testing message 3<<This is message number 3 >>
116    4  09/29 Test4              Testing message 4<<This is message number 4 >>
117 EOF
118 unseen > $actual 2>&1
119 check
120
121 # test fnext with the current folder not in the list
122 echo 'Current-Folder: foo1' > $MH_TEST_DIR/Mail/context
123 echo 'inbox  1 3-4' > $expected
124 fnext -folders $folders > $actual 2>&1
125 check
126
127 # test fprev with the current folder not in the list
128 echo 'Current-Folder: foo1' > $MH_TEST_DIR/Mail/context
129 echo 'inbox  1 3-4' > $expected
130 fprev -folders $folders > $actual 2>&1
131 check
132
133 # test fnext with current folder in the middle of the list
134 echo 'Current-Folder: foo2' > $MH_TEST_DIR/Mail/context
135 echo 'inbox  1 3-4' > $expected
136 fnext > $actual 2>&1
137 check
138
139 # test fprev with current folder in the middle of the list
140 echo 'Current-Folder: foo2' > $MH_TEST_DIR/Mail/context
141 echo 'foo1  1 3-4' > $expected
142 fprev > $actual 2>&1
143 check
144
145 # test fprev with current folder at the beginning of the list
146 echo 'Current-Folder: foo1' > $MH_TEST_DIR/Mail/context
147 echo 'inbox  1 3-4' > $expected
148 fprev > $actual 2>&1
149 check
150
151 # test fnext with current folder at the end of the list
152 echo 'Current-Folder: inbox' > $MH_TEST_DIR/Mail/context
153 echo 'foo1  1 3-4' > $expected
154 fnext > $actual 2>&1
155 check
156
157 # test fnext with no current folder
158 rm $MH_TEST_DIR/Mail/context
159 echo 'foo1  1 3-4' > $expected
160 fnext > $actual 2>&1
161 check
162
163 # test fnext with only one folder in the list
164 cat > $folders <<EOF
165 inbox
166 EOF
167 echo 'inbox  1 3-4' > $expected
168 fnext -folders $folders > $actual 2>&1
169 check
170
171 exit $failed