#!/bin/sh testname=${0#$srcdir/} if test -z "$MH_OBJ_DIR"; then srcdir=`dirname "$0"`/../.. MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR fi . "$MH_OBJ_DIR/test/common.sh" setup_test_without_data Mail rm -rf "$MH_TEST_DIR/panda" imap_cleanup() { #### Save exit status to use as status for this program. status=$? set +e [ -n "$imapd_pid" ] && kill $imapd_pid "$MH_OBJ_DIR/target/debug/mhimap" imap shutdown # TODO have cleanup allow additional cleanup registration? # Or just allow it to accept status as argument. (exit $status) cleanup } trap imap_cleanup 0 covdir="$MH_OBJ_DIR/covdata/${MH_COVERAGE_PROFILE:-default}/$testname" install -d "$covdir" export LLVM_PROFILE_FILE="$covdir/$profile-%m.profraw" start_fakeinetd env "HOME=$MH_TEST_DIR/panda" "$PANDA_IMAPD" imapd_pid=$fakeinetd_pid cat >> "$MH" <> "$MH" echo "imap-log-$MH_TEST_IMAP_LOG_LEVEL-to: $MH_TEST_DIR/$profile/imap.d/log.$MH_TEST_IMAP_LOG_LEVEL" >> "$MH" fi mkdir "$MH_TEST_DIR/panda" mkdir "$MH_TEST_DIR/panda/test" expected="$MH_TEST_DIR/$$.expected" actual="$MH_TEST_DIR/$$.actual" # TODO duplicated with test-inc removed_message=5 arith_val=1 message_count=11 cat > $MH_TEST_DIR/panda/test/fold <>" > "$expected.scan-all" while [ $arith_val -lt $message_count ]; do arith_eval $arith_val + 1 printf ' %2d 10/24 me <>\n' $arith_val >> "$expected.scan-all" printf ' %2d U 10/24 me <>\n' $arith_val >> "$expected.scan-unseen" cat >> $MH_TEST_DIR/panda/test/fold <>\n' $arith_val >> "$expected.scan-unseen" printf ' %2d 10/24 me <>\n' $arith_val >> "$expected.scan-all" fi cat >> $MH_TEST_DIR/panda/test/fold < "$actual" check "$expected.scan-all" "$actual" 'keep first' ################################################################################ start_test 'scan all explicitly' run_prog scan +imap/fold -width 80 all > "$actual" check "$expected.scan-all" "$actual" 'keep first' ################################################################################ start_test 'scan unseen' run_prog scan +imap/fold -form scan.unseen -width 80 unseen > "$actual" check "$expected.scan-unseen" "$actual" cat > "$expected" < "$expected" <> 3 U 10/24 me <> 4 U 10/24 me <> 6 U 10/24 me <> 8 U 10/24 me <> 9 U 10/24 me <> 10 U 10/24 me <> EOF run_prog scan +imap/fold -form scan.unseen -width 80 8-9 9-10 2-6 > "$actual" check "$expected" "$actual" cat > "$expected" < "$expected" < "$actual" 2>&1 || : check "$expected" "$actual" ################################################################################ start_test 'mark -del testseq unseen' check_exit '-eq 0' mark -add -seq testseq 6 8 10 # TODO check output check_exit '-eq 0' scan testseq check_exit '-eq 0' mark -del -seq testseq unseen # TODO should be 'scan: bad message list testseq' cat > "$expected" < "$actual" 2>&1 || : check "$expected" "$actual" ################################################################################ start_test 'show unseen twice' sed 's/^ 11 / 11+/' "$expected.scan-all" > "$expected" check_exit '-eq 0' show unseen unseen run_prog scan +imap/fold -width 80 > "$actual" check "$expected" "$actual" ################################################################################ start_test 'show 1-11' sed 's/^ 11 / 11+/' "$expected.scan-all" > "$expected" rm "$expected.scan-all" check_exit '-eq 0' show 1-11 ################################################################################ start_test 'scan testseq' check_exit '-eq 0' mark -add -seq testseq 2-3 6-8 11 cat > "$expected" <> 3 10/24 me <> 6 10/24 me <> 7 10/24 me <> 8 10/24 me <> 11+ 10/24 me <> EOF run_prog scan +imap/fold -form scan.unseen -width 80 testseq > "$actual" check "$expected" "$actual" ################################################################################ start_test 'mark -del testseq 1' check_exit '-eq 0' mark -del -seq testseq 2 cat > "$expected" <> 6 10/24 me <> 7 10/24 me <> 8 10/24 me <> 11+ 10/24 me <> EOF run_prog scan +imap/fold -form scan.unseen -width 80 testseq > "$actual" check "$expected" "$actual" ################################################################################ start_test 'mark -del testseq all' check_exit '-eq 0' mark -del -seq testseq testseq ################################################################################ start_test 'scan testseq after mark -del' # TODO should be 'scan: bad message list testseq' cat > "$expected" < "$actual" 2>&1 || : check "$expected" "$actual" finish_test exit ${failed:-0}