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