From 0dfcd073ffc391ca38b523a8d43e3f9479bb14c1 Mon Sep 17 00:00:00 2001 From: Guilhem Moulin Date: Fri, 13 Dec 2019 04:43:43 +0100 Subject: New test for hierarchy delimiter change. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cf. https://www.imapwiki.org/ClientImplementation/MailboxList#Hierarchy_separators “Some clients cache the hierarchy separator forever. This has problems if the server configuration is changed (e.g. server software changed). Try to avoid this problem.” --- tests/delimiter-change/t | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 tests/delimiter-change/t (limited to 'tests/delimiter-change/t') diff --git a/tests/delimiter-change/t b/tests/delimiter-change/t new file mode 100644 index 0000000..3f96953 --- /dev/null +++ b/tests/delimiter-change/t @@ -0,0 +1,37 @@ +# create and populate some mailboxes +doveadm -u "local" mailbox create -- "foo" "foo.bar" "baz" + +run() { + local i m u s1="$1" s2="$2" m2 + for ((i = 0; i < 16; i++)); do + m="$(shuf -n1 -e -- "foo" "foo${s1}bar" "baz" "INBOX")" + u="$(shuf -n1 -e -- "local" "remote")" + [ "$u" = "local" ] && m2="$m" || m2="${m//"$s1"/$s2}" + sample_message | deliver -u "$u" -- -m "$m2" + done + interimap --debug + grep -Fxq "local: Using \"$s1\" as hierarchy delimiter" <"$STDERR" || error + grep -Fxq "remote: Using \"$s2\" as hierarchy delimiter" <"$STDERR" || error + check_mailbox_list "foo" "foo${s1}bar" "baz" "INBOX" + check_mailboxes_status "foo" "foo${s1}bar" "baz" "INBOX" || error +} + +run "." "?" + +# make sure interimap doesn't choke when the hierarchy delimiter changes +# cf. https://www.imapwiki.org/ClientImplementation/MailboxList#Hierarchy_separators +sed -ri "s,^(\\s*separator\\s*)=.*,separator = /," "$HOME_remote/.dovecot/config" +run "." "/" + +sed -ri "s,^(\\s*separator\\s*)=.*,separator = /," "$HOME_local/.dovecot/config" +run "/" "/" + +sed -ri "s,^(\\s*separator\\s*)=.*,separator = .," "$HOME_local/.dovecot/config" +sed -ri "s,^(\\s*separator\\s*)=.*,separator = .," "$HOME_remote/.dovecot/config" +run "." "." + +# ensure there were no duplicates +n="$(doveadm -u "local" search all | wc -l)" +[ "$n" -eq 64 ] || error "$n != 64" + +# vim: set filetype=sh : -- cgit v1.2.3