]> diplodocus.org Git - nmh/blob - test/rcv/test-rcvstore
sbr/oauth.c: Remove const to avoid curl's debug_callback warning.
[nmh] / test / rcv / test-rcvstore
1 #!/bin/sh
2 ######################################################
3 #
4 # Test rcvstore
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 # Use proper program, likely not the first one on PATH.
20 rcvstore="${MH_LIBEXEC_DIR}/rcvstore"
21
22 check_exit '-eq 1' $rcvstore -
23
24 expected=$MH_TEST_DIR/$$.expected
25 expected_err=$MH_TEST_DIR/$$.expected_err
26 actual=$MH_TEST_DIR/$$.actual
27 actual_err=$MH_TEST_DIR/$$.actual_err
28
29
30 # check -help
31 cat >$expected <<EOF
32 Usage: rcvstore [+folder] [switches]
33 switches are:
34 -[no]create
35 -[no]unseen
36 -[no]public
37 -[no]zero
38 -sequence name
39 -version
40 -help
41 EOF
42
43 #### Skip nmh intro text.
44 run_prog "$rcvstore" -help | sed '/^$/,$d' >"$actual" 2>&1
45 check "$expected" "$actual"
46
47 # check -version
48 case `$rcvstore -v` in
49 rcvstore\ --*) ;;
50 * ) printf '%s: rcvstore -v generated unexpected output\n' "$0" >&2
51 failed=`expr ${failed:-0} + 1`;;
52 esac
53
54 # check unknown switch
55 run_test "$rcvstore -nonexistent" 'rcvstore: -nonexistent unknown'
56
57 # check with no switches and zero-length input message
58 cat >$expected <<EOF
59 rcvstore: empty file
60 EOF
61
62 run_prog $rcvstore </dev/null >$actual 2>&1
63 check $expected $actual
64
65 # check with no switches
66 cat >$expected <<EOF
67 EOF
68 run_prog $rcvstore <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
69 check $expected $actual 'keep first'
70 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
71
72 # check + of existing folder
73 run_prog $rcvstore +inbox <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
74 check $expected $actual 'keep first'
75 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
76
77 # check + of new folder
78 run_prog $rcvstore +newfolder <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
79 check $expected $actual 'keep first'
80 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/newfolder/1" \
81 'keep first'
82 rmdir "${MH_TEST_DIR}/Mail/newfolder"
83
84 # check -nocreate
85 cat >$expected_err <<EOF
86 rcvstore: folder ${MH_TEST_DIR}/Mail/newfolder doesn't exist
87 EOF
88
89 set +e
90 run_prog $rcvstore +newfolder -nocreate <${MH_TEST_DIR}/Mail/inbox/1 >$actual \
91 2>$actual_err
92 set -e
93 check $expected $actual 'keep first'
94 check $expected_err $actual_err
95
96 # check -create
97 run_prog $rcvstore +newfolder -nocreate -create <${MH_TEST_DIR}/Mail/inbox/1 \
98 >$actual 2>&1
99 check $expected $actual 'keep first'
100 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/newfolder/1" \
101 'keep first'
102 rmdir "${MH_TEST_DIR}/Mail/newfolder"
103
104 # check addition to unseen sequence
105 printf 'Unseen-Sequence: unseen\n' >> $MH
106 run_prog $rcvstore <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
107 check $expected $actual 'keep first'
108 run_test 'mark -sequence unseen -list' 'unseen: 11'
109 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
110 #### Need to clear the unseen sequence.
111 touch "${MH_TEST_DIR}/Mail/inbox/11"
112 rmm 11
113
114 # check -nounseen
115 run_prog $rcvstore -nounseen <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
116 check $expected $actual 'keep first'
117 run_test 'mark -sequence unseen -list' 'unseen: '
118 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
119
120 # check -unseen
121 run_prog $rcvstore -nounseen -unseen <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
122 check $expected $actual 'keep first'
123 run_test 'mark -sequence unseen -list' 'unseen: 11'
124 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
125
126 # check -sequence
127 run_prog $rcvstore -sequence newseq <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
128 check $expected $actual 'keep first'
129 run_test 'mark -sequence newseq -list' 'newseq: 11'
130 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
131
132 # check that default is -nozero
133 mark -sequence newseq all
134 run_prog $rcvstore -sequence newseq <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
135 check $expected $actual 'keep first'
136 run_test 'mark -sequence newseq -list' 'newseq: 1-11'
137 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
138
139 # check -zero
140 mark -sequence newseq all
141 run_prog $rcvstore -sequence newseq -zero \
142 <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
143 check $expected $actual 'keep first'
144 run_test 'mark -sequence newseq -list' 'newseq: 11'
145 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
146
147 # check -nozero
148 mark -sequence newseq all
149 run_prog $rcvstore -seq newseq -zero -nozero \
150 <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
151 check $expected $actual 'keep first'
152 run_test 'mark -sequence newseq -list' 'newseq: 1-11'
153 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
154
155 # check that default is -public
156 run_prog $rcvstore -sequence pubseq <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
157 check $expected $actual 'keep first'
158 run_test 'mark -sequence pubseq -list' 'pubseq: 11'
159 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
160
161 # check -nopublic
162 run_prog $rcvstore -sequence privseq -nopublic \
163 <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
164 check $expected $actual 'keep first'
165 run_test 'mark -sequence privseq -nopublic -list' 'privseq (private): 11'
166 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
167
168 # check -public
169 run_prog $rcvstore -sequence pubseq -nopublic -public \
170 <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
171 check $expected $actual 'keep first'
172 run_test 'mark -sequence pubseq -public -list' 'pubseq: 11'
173 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
174
175 #### Windows FAT filesystems don't support file permissions that
176 #### disallow read access, and chmod doesn't fail. If a test above
177 #### has failed, report that failure. Otherwise, report that we're
178 #### skipping the remainer of the test if chmod can't remove read
179 #### permission.
180 printf '\n' >${MH_TEST_DIR}/Mail/test-read-perms
181 chmod 600 ${MH_TEST_DIR}/Mail/test-read-perms
182 if [ "`find ${MH_TEST_DIR}/Mail/test-read-perms -perm 600`"x = ''x ]; then
183 if [ ${failed:-0} -eq 0 ]; then
184 echo "$Test $0 SKIP (cannot remove read permission on plain files)"
185 exit 77
186 else
187 exit $failed
188 fi
189 else
190 rm -f ${MH_TEST_DIR}/Mail/test-read-perms
191 fi
192
193 # check default Msg-Protect
194 msgprot=`mhparam msgprot`
195 run_prog $rcvstore <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
196 check $expected $actual 'keep first'
197 run_test "find ${MH_TEST_DIR}/Mail/inbox/11 -perm $msgprot" \
198 "${MH_TEST_DIR}/Mail/inbox/11"
199 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11" 'keep first'
200
201 # check Msg-Protect profile entry
202 msgprot=640
203 printf 'Msg-Protect: %s\n' "$msgprot" >>$MH
204 run_prog $rcvstore <${MH_TEST_DIR}/Mail/inbox/1 >$actual 2>&1
205 check $expected $actual
206 run_test "find ${MH_TEST_DIR}/Mail/inbox/11 -perm $msgprot" \
207 "${MH_TEST_DIR}/Mail/inbox/11"
208 check "${MH_TEST_DIR}/Mail/inbox/1" "${MH_TEST_DIR}/Mail/inbox/11"
209
210
211 exit ${failed:-0}