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