diff options
Diffstat (limited to 'tests/04-resume/run')
-rw-r--r-- | tests/04-resume/run | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/tests/04-resume/run b/tests/04-resume/run deleted file mode 100644 index 22d66bc..0000000 --- a/tests/04-resume/run +++ /dev/null @@ -1,98 +0,0 @@ -# create and populate a bunch of mailboxes -doveadm -u "local" mailbox create "foo" "foo.bar" "baz" -for ((i = 0; i < 8; i++)); do - sample_message | deliver -u "local" -- -m "foo" - sample_message | deliver -u "local" -- -m "foo.bar" - sample_message | deliver -u "local" -- -m "INBOX" -done -interimap -check_mailbox_list -check_mailboxes_status "foo" "foo.bar" "baz" "INBOX" - -# spoof UIDNEXT in the database -set_uidnext() { - local imap="$1" mailbox="$2" uidnext="$3" - sqlite3 "$XDG_DATA_HOME/interimap/remote.db" <<-EOF - UPDATE $imap - SET UIDNEXT = $uidnext - WHERE idx = ( - SELECT idx - FROM mailboxes - WHERE mailbox = x'$mailbox' - ); - EOF -} - -# spoof "foo"'s UIDVALIDITY and UIDNEXT values -uidvalidity="$(doveadm -u "local" -f flow mailbox status uidvalidity "foo" | sed 's/.*=//')" -[ $uidvalidity -eq 4294967295 ] && uidvalidity2=1 || uidvalidity2=$((uidvalidity+1)) -doveadm -u "local" mailbox update --uid-validity "$uidvalidity2" "foo" -set_uidnext "local" "$(printf "%s" "foo" | xxd -ps)" 1 - -# verify that interimap chokes on the UIDVALIDITY change without doing any changes -sqlite3 "$XDG_DATA_HOME/interimap/remote.db" >"$TMPDIR/dump.sql" <<-EOF - .dump -EOF -doveadm -u "local" mailbox status "all" "foo" >"$TMPDIR/foo.local" -doveadm -u "remote" mailbox status "all" "foo" >"$TMPDIR/foo.remote" - -! interimap -xgrep -Fx "Resuming interrupted sync for foo" <"$STDERR" -xgrep -Fx "local(foo): ERROR: UIDVALIDITY changed! ($uidvalidity2 != $uidvalidity) Need to invalidate the UID cache." <"$STDERR" - -sqlite3 "$XDG_DATA_HOME/interimap/remote.db" >"$TMPDIR/dump2.sql" <<-EOF - .dump -EOF -doveadm -u "local" mailbox status "all" "foo" >"$TMPDIR/foo.local2" -doveadm -u "remote" mailbox status "all" "foo" >"$TMPDIR/foo.remote2" - -diff -u --label="a/dump.sql" --label="b/dump.sql" "$TMPDIR/dump2.sql" "$TMPDIR/dump.sql" -diff -u --label="a/foo.local" --label="b/foo.remote" "$TMPDIR/foo.local" "$TMPDIR/foo.local2" -diff -u --label="a/foo.local" --label="b/foo.remote" "$TMPDIR/foo.remote" "$TMPDIR/foo.remote2" - - -# spoof UIDNEXT values for INBOX (local+remote) and foo.bar (remote) -set_uidnext "local" "$(printf "%s" "INBOX" | xxd -ps)" 2 -set_uidnext "remote" "$(printf "%s" "INBOX" | xxd -ps)" 2 -set_uidnext "remote" "$(printf "%s\\0%s" "foo" "bar" | xxd -ps)" 0 - -# set some flags and remove some messages for UIDs >2 -doveadm -u "local" flags add "\\Seen" mailbox "INBOX" 6,7 -doveadm -u "remote" flags add "\\Deleted" mailbox "INBOX" 6,8 - -doveadm -u "local" expunge mailbox "INBOX" 4,5 -doveadm -u "remote" expunge mailbox "INBOX" 3,4 -doveadm -u "remote" expunge mailbox "foo~bar" 5 - -# add new messages -sample_message | deliver -u "local" -- -m "foo.bar" -sample_message | deliver -u "remote" -- -m "foo~bar" -sample_message | deliver -u "local" -- -m "baz" - -interimap "foo.bar" "InBoX" "baz" # ignore "foo" -xgrep -Fx "Resuming interrupted sync for foo.bar" <"$STDERR" -xgrep -Fx "Resuming interrupted sync for INBOX" <"$STDERR" -check_mailbox_list -check_mailboxes_status "foo.bar" "INBOX" "baz" # ignore "foo" - - -# count entries in the mapping table -sqlite3 "$XDG_DATA_HOME/interimap/remote.db" >"$TMPDIR/count" <<-EOF - SELECT COUNT(*) - FROM mapping NATURAL JOIN mailboxes - WHERE mailbox != x'$(printf "%s" "foo" | xxd -ps)' - GROUP BY idx - ORDER BY mailbox; -EOF - -# count messages: -# INBOX: 8-2-1 = 5 -# baz: 1 -# foo.bar: 8-1+1+1 = 9 -diff -u --label="a/count" --label="b/count" "$TMPDIR/count" - <<-EOF - 5 - 1 - 9 -EOF - -# vim: set filetype=sh : |