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