summaryrefslogtreecommitdiffstats
path: root/imap/testsuite
diff options
context:
space:
mode:
authorSam Varshavchik2013-08-19 16:39:41 -0400
committerSam Varshavchik2013-08-25 14:43:51 -0400
commit9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch)
tree7a81a04cb51efb078ee350859a64be2ebc6b8813 /imap/testsuite
parenta9520698b770168d1f33d6301463bb70a19655ec (diff)
downloadcourier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2
Initial checkin
Imported from subversion report, converted to git. Updated all paths in scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'imap/testsuite')
-rwxr-xr-ximap/testsuite1084
1 files changed, 1084 insertions, 0 deletions
diff --git a/imap/testsuite b/imap/testsuite
new file mode 100755
index 0000000..53671c0
--- /dev/null
+++ b/imap/testsuite
@@ -0,0 +1,1084 @@
+#!/bin/sh
+
+# Maintainer's sanity check
+
+OPTIONS=""
+export OPTIONS
+TZ=EST5EDT
+export TZ
+
+echo '****************************' >&2
+echo '* Sanity check in progress *' >&2
+echo '****************************' >&2
+#test ! -d confmdtest || find confmdtest -exec chmod u+rwx {} \;
+#test ! -d confmdtest2 || find confmdtest2 -exec chmod u+rwx {} \;
+test ! -d confmdtest || chmod -R u+rwx confmdtest
+test ! -d confmdtest2 || chmod -R u+rwx confmdtest2
+rm -rf confmdtest
+../maildir/maildirmake confmdtest || exit 1
+
+cat >confmdtest/cur/msg1:2,S <<EOF || exit 1
+From: John <john@example.com>
+To: Steve <steve@example.com>, Tom <tom@example.com>
+Mime-Version: 1.0
+Content-Type: multipart/mixed; boundary="b1"
+Subject: This is the message
+
+foobar
+--b1
+Content-Type: text/plain
+
+This is section 1
+
+--b1
+Content-Type: text/plain
+
+This is section 2
+
+--b1
+Content-Type: message/rfc822
+
+Mime-Version: 1.0
+Content-Type: multipart/mixed; boundary="b2"
+Subject: This is message part 3
+
+foobar
+--b2
+Content-Type: text/plain
+
+This is section 3.1
+
+--b2
+Content-Type: text/plain
+
+This is section 3.2
+
+--b2--
+--b1
+Content-Type: multipart/mixed; boundary="b3"
+
+foobar
+--b3
+Content-Type: text/plain
+
+This is section 4.1
+
+--b3
+Content-Type: message/rfc822
+
+Mime-Version: 1.0
+Content-Type: multipart/mixed; boundary="b4"
+Subject: This is message part 4.2
+
+foobar
+--b4
+Content-Type: text/plain
+
+This is section 4.2.1
+
+--b4
+Content-Type: multipart/alternative; boundary="b5"
+
+foobar
+--b5
+Content-Type: text/plain
+
+This is section 4.2.2.1
+
+--b5
+Content-Type: text/plain
+
+This is section 4.2.2.2
+
+--b5--
+
+--b4--
+
+--b3--
+
+--b1--
+EOF
+
+inituid() {
+
+initdir="$1"
+
+if test "$initdir" = ""
+then
+ initdir="confmdtest"
+fi
+
+initinbox="$2"
+if test "$initinbox" = ""
+then
+ initinbox="inbox"
+else
+ initinbox="inbox.$initinbox"
+fi
+
+env IMAP_BROKENUIDV=1 MAILDIR=$initdir ./imapd >confmdtest.stdout <<EOF
+a001 select $initinbox
+a logout
+EOF
+
+}
+
+inituid
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+a001 select inbox
+a002 fetch 1 (bodystructure)
+a003 fetch 1 (body[])
+a004 fetch 1 (body[]<500.100>)
+a005 fetch 1 (body[1])
+a006 fetch 1 (body[1.text])
+a007 fetch 1 (body[2])
+a008 fetch 1 (body[2.text])
+a009 fetch 1 (body[3.header])
+a010 fetch 1 (body[3.mime])
+a011 fetch 1 (body[3.mime]<10,50>)
+a012 fetch 1 (body[3.1])
+a013 fetch 1 (body[3.2])
+a014 fetch 1 (body[4.1])
+a015 fetch 1 (body[4.2.header])
+a016 fetch 1 (body[4.2.1])
+a017 fetch 1 (body[4.2.2.1])
+a018 fetch 1 (body[4.2.2.2])
+a019 fetch 1 (envelope)
+a020 fetch 1 (body)
+a021 fetch 1 (envelope body)
+a022 fetch 1 (bodystructure)
+a023 fetch 1 (rfc822.size)
+a024 fetch 1 (all)
+a025 fetch 1 (fast)
+a026 fetch 1 (full)
+a027 fetch 1 (rfc822.text)
+a028 fetch 1 (body[header.fields(content-type)])
+adone logout
+EOF
+
+rm -f confmdtest/cur/msg1:2,S
+
+cat >confmdtest/new/msg2 <<EOF || exit 1
+From: John <john@example.com>
+To: Steve <steve@example.com>,
+ Tom <tom@example.com>
+Mime-Version: 1.0
+Date: Wed, 22 Sep 1999 15:41:09 -0200
+Content-Type: multipart/mixed; boundary="b1"
+Subject: This is the message
+
+foobar
+--b1
+Content-Type: text/plain
+
+This is section 1
+
+--b1
+Content-Type: message/rfc822
+
+Subject: This is message part 4.2
+From: dave@example.org
+To: tom@example.org
+Cc: steve@example.org
+Mime-Version: 1.0
+content-type: text/plain
+content-transfer-encoding: quoted-printable
+
+
+M=41ry had a little lamb, it's fleece was white as snow. And everywhere
+Mary went, the lamb was sure to go.
+
+--b1--
+EOF
+
+inituid
+
+cat >confmdtest/new/msg3 <<EOF || exit 1
+From: todd@example.org
+To: kevin@example.org
+Subject: today's meeting
+
+Today's meeting has been cancelled
+EOF
+cat >confmdtest/new/msg4 <<EOF || exit 1
+Subject: New MIME headers test
+Mime-Version: 1.0
+Content-Type: multipart/mixed; boundary="c1"
+Content-Language: en
+
+
+--c1
+Content-Type: text/plain
+Content-ID: <foo@bar>
+Content-Description: MIME test message
+Content-MD5: aaaabbbb
+
+test
+
+--c1--
+EOF
+touch -t 199901010000 confmdtest/new/msg3
+
+inituid
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+b000 status inbox ( MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)
+b001 select inbox
+b001a status inbox ( MESSAGES RECENT UIDNEXT UIDVALIDITY UNSEEN)
+b002 fetch 1:2 (flags uid)
+b003 search header "content-type" "multipart"
+b004 search 2 header "content-type" "multipart"
+b005 search to tom@example
+b006 search subject "message part 4.2"
+b007 search before "1-Feb-1999"
+b008 search on "1-Jan-1999"
+b009 search senton "22-Sep-1999"
+b010 search recent
+b011 fetch 1 (rfc822.header)
+b012 fetch 1:2 (flags)
+b013 search seen
+b014 search body "mary had a little lamb"
+b015 uid search body "mary had a little lamb"
+b016 store 1:2 +flags(\flagged)
+b017 store 1 flags(\seen \deleted)
+b018 expunge
+b019 fetch 1 (flags uid)
+b020 create inbox.bozo
+b021 uid copy 3 inbox.bozo
+b022 select inbox.bozo
+b023 status inbox.bozo (uidnext)
+b024 fetch 1 (flags)
+b025 append inbox.bozo \Seen {11}
+test
+
+test
+
+b026 append inbox.bozo (\Seen \Flagged) {11}
+test
+
+test
+
+b027 noop
+b028 fetch 1 flags
+b029 fetch 1 flags
+b030 select inbox
+b031 fetch 2 (bodystructure)
+adone logout
+EOF
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+foo select inbox.bozo
+foo store 1 +flags \Deleted
+foo expunge
+foo logout
+EOF
+rm -rf confmdtest
+mkdir confmdtest || exit 1
+mkdir confmdtest/tmp || exit 1
+mkdir confmdtest/cur || exit 1
+mkdir confmdtest/new || exit 1
+echo "10000S,2C" >confmdtest/maildirsize
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+c001 select inbox
+c002 append inbox {5}
+test
+
+c003 append inbox {5}
+test
+
+c004 append inbox {5}
+test
+
+c005 noop
+c006 store 1 +flags \Deleted
+c007 append inbox {5}
+test
+
+c008 noop
+c009 append inbox {5}
+test
+
+c010 store 1 -flags \Deleted
+cdone logout
+EOF
+cat confmdtest/maildirsize
+rm -rf confmdtest
+mkdir confmdtest || exit 1
+mkdir confmdtest/tmp || exit 1
+mkdir confmdtest/cur || exit 1
+mkdir confmdtest/new || exit 1
+echo "10000S,5C" >confmdtest/maildirsize
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+d001 select inbox
+d002 append inbox {5}
+test
+
+d003 noop
+d004 copy 1 inbox
+d005 noop
+ddone logout
+EOF
+cat confmdtest/maildirsize
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+e001 select inbox
+e002 copy 1:2 inbox
+e003 noop
+edone logout
+EOF
+cat confmdtest/maildirsize
+../maildir/maildirmake -f Trash confmdtest || exit 1
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+f001 select inbox
+f002 copy 1:2 inbox
+f002 copy 1:2 inbox.Trash
+f003 noop
+f004 select inbox.Trash
+f005 copy 1:2 inbox
+f006 copy 1:2 inbox.Trash
+f007 noop
+f008 copy 1 inbox
+f009 select inbox
+fdone logout
+EOF
+cat confmdtest/maildirsize
+echo "Counts:" `ls confmdtest/cur | wc -l` `ls confmdtest/.Trash/cur | wc -l`
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+g001 select inbox
+g002 select Trash
+g003 select INBOX.Trash
+g004 delete INBOX.Trash
+g005 close
+g006 delete INBOX.Trash
+g007 create INBOX.a
+g008 delete INBOX.a/
+g009 delete INBOX.a
+g010 create inbox.a/
+gdone logout
+EOF
+
+rm -rf confmdtest2
+../maildir/maildirmake confmdtest2
+../maildir/maildirmake -f a confmdtest2
+../maildir/maildirmake -f b confmdtest2
+chmod u-rwx confmdtest2/.b/tmp
+chmod u-rwx confmdtest2/.b/new
+chmod u-rwx confmdtest2/.b/cur
+
+echo "test `pwd`/confmdtest2" >confmdtest/shared-maildirs
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+h001 list "" "*"
+h002 list "" "%"
+h003 list "" "%.%"
+h004 list "" "%.%.%"
+h005 list "shared" "*"
+h006 list "shared.test" "*"
+h007 list "INBOX" ""
+h008 list "shared" ""
+h009 list "shared.test" ""
+h010 subscribe inbox
+h011 list "" "*"
+h012 lsub "" "*"
+h013 subscribe shared.test.a
+h014 list "" "*"
+h015 lsub "" "*"
+h016 subscribe shared.test.b
+h017 list "" "*"
+h018 lsub "" "*"
+h019 unsubscribe shared.test.a
+h020 list "" "*"
+h021 lsub "" "*"
+h022 subscribe shared.test.a
+h023 list "" "*"
+h024 lsub "" "*"
+hdone logout
+EOF
+
+cat >confmdtest2/.a/new/msg1 <<EOF
+Subject: message 1
+
+message 1
+EOF
+
+inituid confmdtest2 a
+
+cat >confmdtest2/.a/new/msg2 <<EOF
+Subject: message 2
+
+message 2
+EOF
+
+inituid confmdtest2 a
+
+cat >confmdtest/new/msg1 <<EOF
+Subject: message 1
+EOF
+
+cat >confmdtest/.Trash/new/msg2 <<EOF
+Subject: message 2
+EOF
+
+../maildir/maildirmake -f c confmdtest
+../maildir/maildirmake -f Trash confmdtest2
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+ii001 list "" "*"
+ii002 list "" "*"
+iidone logout
+EOF
+
+env IMAP_BROKENUIDV=1 IMAP_CHECK_ALL_FOLDERS=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+ii003 list "" "*"
+ii004 list "" "*"
+iidone logout
+EOF
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+i001 select shared.test.b
+i002 select shared.test.a
+i003 close
+i004 select shared.test.a
+i005 append shared.test.a {5}
+test
+
+i006 noop
+i007 fetch 1:* (flags)
+i008 select inbox
+i009 copy 1:2 shared.test.a
+i010 select shared.test.a
+i011 fetch 1:* (flags)
+i012 append shared.test.b {5}
+i013 copy 1 shared.test.b
+i014 store 1:2 +flags (\Deleted)
+i015 expunge
+idone logout
+EOF
+chmod -R u+rwx confmdtest
+chmod -R u+rwx confmdtest2
+
+rm -f confmdtest/new/*
+rm -f confmdtest/cur/*
+
+cat >confmdtest/new/msg1 <<EOF
+From: John <john1@example.com>
+To: John <cca4@example.com>, <ccb1@example.com>
+Cc: John <toa1@example.com>, <tob4@example.com>
+Subject: Re[2]: [foo] message 1
+Date: Wed, 22 Sep 1999 15:41:09 -0200
+
+message 1
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+EOF
+
+inituid
+
+cat >confmdtest/new/msg2 <<EOF
+From: John <john2@example.com>
+To: John <cca3@example.com>, <ccb2@example.com>
+Cc: John <toa2@example.com>, <tob3@example.com>
+Subject: message 2
+Date: Wed, 22 Sep 1999 15:41:00 -0200
+
+message 2
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+EOF
+
+inituid
+
+cat >confmdtest/new/msg3 <<EOF
+From: John <john3@example.com>
+To: John <cca2@example.com>, <ccb3@example.com>
+Cc: John <toa3@example.com>, <tob2@example.com>
+Subject: message 1
+Date: Wed, 22 Sep 1999 15:41:00 -0200
+
+message 3
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+EOF
+
+inituid
+
+cat >confmdtest/new/msg4 <<EOF
+From: John <john4@example.com>
+To: John <cca1@example.com>, <ccb4@example.com>
+Cc: John <toa4@example.com>, <tob1@example.com>
+Subject: [fwd:message 1] (fwd)
+Date: Wed, 15 Sep 1999 15:41:00 -0200
+
+message 3
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+EOF
+
+inituid
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+T001 select INBOX
+T002 fetch 1:* (uid body[header.fields(date)])
+T003 THREAD ORDEREDSUBJECT US-ASCII ALL
+T004 THREAD ORDEREDSUBJECT US-ASCII SENTSINCE 19-SEP-1999
+S001 SORT (SUBJECT DATE) US-ASCII ALL
+S002 SORT (SUBJECT REVERSE DATE) US-ASCII ALL
+S003 SORT (REVERSE SUBJECT DATE) US-ASCII ALL
+S004 SORT (FROM) US-ASCII ALL
+S005 SORT (REVERSE FROM) US-ASCII ALL
+S006 SORT (FROM) US-ASCII SENTSINCE 19-SEP-1999
+S007 SORT (REVERSE FROM) US-ASCII SENTSINCE 19-SEP-1999
+S008 SORT (TO) US-ASCII ALL
+S009 SORT (CC) US-ASCII ALL
+S010 SORT (REVERSE SIZE) US-ASCII ALL
+TDONE logout
+EOF
+
+rm -rf confmdtest
+../maildir/maildirmake confmdtest || exit 1
+../maildir/maildirmake -f Trash confmdtest || exit 1
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+J001 list "" "*"
+J002 lsub "" "*"
+J003 SUBSCRIBE INBOX
+J004 SUBSCRIBE INBOX.Trash
+J005 list "" "*"
+J006 lsub "" "*"
+J007 UNSUBSCRIBE INBOX
+J008 LIST "" "*"
+J009 LSUB "" "*"
+JDONE logout
+EOF
+
+rm -rf confmdtest
+../maildir/maildirmake confmdtest || exit 1
+
+cat >confmdtest/new/msg1 <<EOF
+From: postmaster
+Subject: thread 1
+Message-ID: <mid1>
+Date: Sat, 05 Feb 2000 13:34:02 -0800
+
+message 1
+EOF
+
+inituid
+
+cat >confmdtest/new/msg2 <<EOF
+From: postmaster
+Subject: thread 1.1
+Date: Sat, 05 Feb 2000 13:34:02 -0800
+Message-ID: <mid2>
+References: <mid1>
+
+message 2
+EOF
+
+inituid
+
+cat >confmdtest/new/msg3 <<EOF
+From: postmaster
+Date: Sat, 05 Feb 2000 13:34:02 -0800
+Subject: thread 1.2
+In-Reply-To: <mid2>
+
+message 3
+EOF
+
+inituid
+
+cat >confmdtest/new/msg4 <<EOF
+From: postmaster
+Date: Sat, 05 Feb 2000 13:34:02 -0800
+Subject: thread 1.2
+References: <mid1>
+
+message 4
+EOF
+
+inituid
+
+cat >confmdtest/new/msg5 <<EOF
+From: postmaster
+Date: Sat, 05 Feb 2000 13:34:02 -0800
+Subject: thread 1.2
+Message-ID: <mid11>
+References: <mid10>
+
+message 5
+EOF
+
+inituid
+
+cat >confmdtest/new/msg6 <<EOF
+From: postmaster
+Date: Sat, 05 Feb 2000 13:34:01 -0800
+Subject: thread 1.2
+Message-ID: <mid12>
+References: <mid10>
+
+message 6
+EOF
+
+inituid
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+K001 select INBOX
+K002 THREAD REFERENCES US-ASCII ALL
+KDONE logout
+EOF
+
+rm -rf confmdtest
+../maildir/maildirmake confmdtest || exit 1
+../maildir/maildirmake -f Trash confmdtest || exit 1
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+L001 CREATE INBOX.a
+L002 CREATE INBOX.a.a
+L003 CREATE INBOX.aa
+L004 RENAME INBOX.a INBOX.b
+L005 LIST "" "*"
+L006 RENAME INBOX.b INBOX.a
+L007 LIST "" "*"
+L008 RENAME INBOX.a. INBOX.b.
+L009 LIST "" "*"
+L010 RENAME INBOX.b. INBOX.a.
+L011 LIST "" "*"
+L012 CREATE INBOX.b.a
+L013 DELETE INBOX.a
+L014 CREATE INBOX.a.a
+L015 LIST "" "*"
+L016 RENAME INBOX.a INBOX.b
+L017 RENAME INBOX.a. INBOX.b.
+L018 SELECT INBOX
+L019 APPEND INBOX \Seen {5}
+test
+
+L020 NOOP
+L021 COPY 1 INBOX
+L022 COPY 1 INBOX
+L023 COPY 1 INBOX
+L024 COPY 1 INBOX
+L025 COPY 1 INBOX
+L026 COPY 1 INBOX
+L027 NOOP
+L028 STORE 2:3,5:7 +FLAGS \Deleted
+L029 FETCH 1:* (UID FLAGS)
+L030 UID EXPUNGE 2,3:5
+L031 FETCH 1:* (UID FLAGS)
+LDONE logout
+EOF
+
+rm -rf confmdtest
+
+../maildir/maildirmake confmdtest || exit 1
+../maildir/maildirmake -q 10C confmdtest || exit 1
+
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+M001 CREATE INBOX.a
+M002 APPEND INBOX \Seen {5}
+test
+
+M003 SELECT INBOX
+M004 COPY 1 INBOX
+M005 COPY 1 INBOX
+M006 NOOP
+M007 COPY 1:3 INBOX.a
+M008 RENAME INBOX.a INBOX.b
+MDONE logout
+EOF
+cat confmdtest/maildirsize
+env IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+M009 DELETE INBOX.b
+MDONE logout
+EOF
+cat confmdtest/maildirsize
+
+rm -rf confmdtest
+
+../maildir/maildirmake confmdtest || exit 1
+env IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+N001 LIST "" "*"
+N002 append inbox \Deleted {11}
+test
+
+test
+
+N003 LIST "" "*"
+N004 SELECT inbox
+N005 EXPUNGE
+N006 LIST "" "*"
+NDONE logout
+EOF
+
+rm -rf confmdtest
+../maildir/maildirmake confmdtest || exit 1
+../maildir/maildirmake -q10C confmdtest
+env IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+O001 append inbox NIL {11}
+test
+
+test
+
+o002 SELECT inbox
+o003 COPY 1 inbox
+o004 NOOP
+o005 STORE 1 +FLAGS \Deleted
+o006 COPY 1:2 inbox
+o007 NOOP
+o008 logout
+EOF
+cat confmdtest/maildirsize
+rm -f confmdtest/maildirsize
+
+env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+p001 SELECT INBOX
+p002 CREATE INBOX.a
+p003 COPY 1 INBOX.a
+p004 SELECT INBOX.a
+p005 STORE 1 +FLAGS(-Label1 \Deleted)
+p006 append INBOX.a (-Label2) {11}
+test
+
+test
+
+p007 EXPUNGE
+p008 FETCH 1:* FLAGS
+p009 COPY 1 INBOX.a
+p010 NOOP
+P011 FETCH 1:* FLAGS
+P012 STORE 1 -FLAGS (-Label2)
+P013 STORE 1 +FLAGS (\SEEN)
+P013 FETCH 1:* FLAGS
+P014 SEARCH SEEN
+P015 SEARCH KEYWORD -LABEL2
+P016 SEARCH UNKEYWORD -Label2
+P017 SEARCH KEYWORD -Label1
+P018 COPY 1:* INBOX.a
+P019 COPY 1:* INBOX.a
+P020 NOOP
+P021 COPY 1:* INBOX.a
+P022 COPY 1:* INBOX.a
+P023 NOOP
+P025 STORE 4 +FLAGS -Label1
+P024 FETCH 1:* FLAGS
+P025 SEARCH KEYWORD -Label2
+P026 SEARCH KEYWORD -Label2 KEYWORD -Label1
+pDONE LOGOUT
+EOF
+
+env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+Q001 select INBOX
+Q002 fetch 1:* FLAGS
+Q003 status INBOX.Trash MESSAGES
+Q004 expunge
+Q005 status INBOX.Trash MESSAGES
+Q006 COPY 1 INBOX.a
+Q007 STORE 1:* +FLAGS \Deleted
+Q008 NOOP
+Q009 EXPUNGE
+Q005 status INBOX.Trash MESSAGES
+qDONE LOGOUT
+EOF
+
+rm -rf confmdtest
+../maildir/maildirmake confmdtest || exit 1
+
+env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+R001 CREATE INBOX.a
+R002 LIST (ACL MYRIGHTS POSTADDRESS) "" "*"
+R003 ACL STORE INBOX owner -t
+R004 ACL STORE (INBOX *) owner +d
+R005 ACL STORE INBOX.a user=systemuser1 alr
+R006 ACL STORE INBOX.a user=systemuser1 +w
+R007 ACL STORE INBOX.a user=systemuser1 -w
+R008 ACL STORE INBOX.a user=systemuser1 -alr
+R009 ACL STORE INBOX.a user=systemuser1 alr
+R010 ACL STORE INBOX.a user=systemuser1 ""
+R011 ACL STORE INBOX.a user=systemuser1 alr
+R012 ACL SET (INBOX *) "owner" "acdilrsw" administrators "acdilrsw" user=systemuser2 alr
+R013 ACL DELETE INBOX.a user=systemuser1
+R014 ACL DELETE INBOX.a user=systemuser2
+R015 ACL STORE INBOX.a owner -a
+R016 ACL STORE INBOX.a -owner +wt
+R017 ACL STORE INBOX.a -owner -w
+R018 ACL DELETE INBOX.a -owner
+R019 ACL STORE INBOX.a -owner +a
+R020 ACL STORE INBOX.a owner -ci
+R021 CREATE INBOX.a.b
+R022 ACL STORE INBOX.a owner +c
+R023 CREATE INBOX.a.b
+R024 LIST (ACL) "" INBOX.a.b
+R025 CREATE INBOX.c.d
+R026 LIST (ACL) "" "INBOX.c*"
+R027 ACL STORE (INBOX.c*) -owner x
+R028 DELETE INBOX.c.d
+R029 ACL DELETE INBOX.c.d -owner
+R030 DELETE INBOX.c.d
+R031 DELETE INBOX.c.
+R032 LIST (ACL) "" "*"
+R033 DELETE INBOX.a
+R034 LIST (ACL) "" "*"
+R035 RENAME INBOX.a INBOX.f
+R036 LIST (ACL) "" "*"
+R037 CREATE INBOX.f
+R038 LIST (ACL) "" "*"
+R039 ACL STORE INBOX owner -i
+R040 SELECT INBOX
+R041 APPEND INBOX (\Seen \Deleted \Answered Foo) {0}
+R042 ACL STORE INBOX owner +i
+R043 APPEND INBOX (\Seen \Deleted \Answered Foo) {11}
+test
+
+test
+
+R043 NOOP
+R044 FETCH 1 (FLAGS)
+R045 ACL STORE INBOX owner -tw
+R046 APPEND INBOX (\Seen \Deleted \Answered Foo) {11}
+test
+
+test
+
+R047 NOOP
+R048 FETCH 2 (FLAGS)
+R049 ACL STORE INBOX owner +tw
+R050 ACL STORE INBOX owner -s
+R051 APPEND INBOX (\Seen \Deleted \Answered Foo) {11}
+test
+
+test
+
+R052 NOOP
+R053 FETCH 3 (FLAGS)
+R054 STORE 2:3 +FLAGS (\Deleted)
+R055 STORE 1 -FLAGS (\Deleted)
+R056 EXPUNGE
+R057 STORE 1 +FLAGS (\Deleted)
+R058 ACL STORE INBOX owner +s
+R059 CREATE INBOX.x
+R060 COPY 1 INBOX.x
+R061 SELECT INBOX.x
+R062 FETCH 1 (FLAGS)
+R063 SELECT INBOX
+R064 ACL STORE INBOX.x owner -s
+R065 COPY 1 INBOX.x
+R066 SELECT INBOX.x
+R067 FETCH 2 (FLAGS)
+R068 SELECT INBOX
+R069 ACL STORE INBOX.x owner +s
+R070 ACL STORE INBOX.x owner -w
+R071 COPY 1 INBOX.x
+R072 SELECT INBOX.x
+R073 FETCH 3 (FLAGS)
+R074 SELECT INBOX
+R075 ACL STORE INBOX.x owner +w
+R076 ACL STORE INBOX.x owner -t
+R077 COPY 1 INBOX.x
+R078 SELECT INBOX.x
+R079 FETCH 4 (FLAGS)
+R080 SELECT INBOX
+RDONE LOGOUT
+EOF
+
+rm -rf confmdtest
+../maildir/maildirmake confmdtest || exit 1
+../maildir/maildirmake -f a confmdtest || exit 1
+cat >confmdtest/.a/cur/msg1:2,S <<EOF || exit 1
+From: John <john@example.com>
+To: john <john@example.com>
+Subject: test
+
+test
+EOF
+env IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+S001 SELECT INBOX.a
+S002 COPY 1 INBOX.a
+S003 NOOP
+S004 COPY 1:2 INBOX.a
+S005 NOOP
+S006 ACL STORE INBOX.a owner -e
+S007 STORE 1 +FLAGS(\Deleted)
+S008 EXPUNGE
+S009 CLOSE
+S010 SELECT INBOX.a
+S011 ACL STORE INBOX.a owner +e
+S012 EXPUNGE
+S013 STORE 1 +FLAGS(\Deleted)
+S014 CLOSE
+S015 SELECT INBOX.a
+S016 CLOSE
+S017 ACL STORE INBOX.a owner -r
+S018 SELECT INBOX.a
+S019 EXAMINE INBOX.a
+S020 STATUS INBOX.a (UIDVALIDITY)
+S021 ACL STORE INBOX.a owner +r
+S022 SELECT INBOX.a
+S023 APPEND INBOX.a NIL {11}
+test
+
+test
+
+S024 NOOP
+S025 STORE 1:* FLAGS ()
+S027 ACL STORE INBOX.a owner -s
+S028 FETCH 1 (BODY[])
+S029 ACL STORE INBOX.a owner +s
+S030 FETCH 1 (BODY[])
+S031 ACL STORE INBOX.a owner -s
+S032 STORE 1:2 FLAGS(\Seen \Deleted Foo)
+S033 STORE 1:2 -FLAGS(\Seen \Deleted Foo)
+S034 STORE 2 +FLAGS(\Seen \Deleted \Answered Foo)
+S035 FETCH 1:2 (FLAGS)
+S036 ACL STORE INBOX.a owner +s
+S037 ACL STORE INBOX.a owner -w
+S038 STORE 1:2 FLAGS(\Seen \Deleted Bar)
+S039 STORE 1:2 -FLAGS(\Seen \Deleted Bar)
+S040 STORE 1:2 +FLAGS(\Seen \Deleted Bar)
+S041 ACL STORE INBOX.a owner +w
+S042 STORE 2 -FLAGS (\Deleted)
+S043 ACL STORE INBOX.a owner -t
+S044 STORE 1:2 FLAGS (\Deleted \Seen Bar)
+S045 STORE 1:2 -FLAGS (\Deleted \Seen Bar)
+S046 STORE 1:2 +FLAGS (\Deleted \Seen Bar)
+S047 CLOSE
+S048 ACL STORE INBOX user=courierimaptestuser1 alr
+S049 ACL STORE INBOX user=courierimaptestuser2 lr
+S050 LIST (ACL) "" INBOX
+SDONE LOGOUT
+EOF
+
+rm -rf confmdtest*
+../maildir/maildirmake confmdtest || exit 1
+../maildir/maildirmake confmdtest2 || exit 1
+../maildir/maildirmake confmdtest3 || exit 1
+mkdir confmdtest4 || exit 1
+cat >confmdtest4/index <<EOF || exit 1
+user0 1 1 `pwd` confmdtest
+a * indexa
+b * indexb
+EOF
+echo "user1 1 1 `pwd` confmdtest2" >confmdtest4/indexa || exit 1
+echo "aashared 1 1 `pwd` confmdtest5" >>confmdtest4/indexa || exit 1
+echo "user2 1 1 `pwd` confmdtest3" >confmdtest4/indexb || exit 1
+
+IMAP_SHAREDINDEXFILE=`pwd`/confmdtest4/index
+export IMAP_SHAREDINDEXFILE
+
+env AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+T001 ACL STORE INBOX user=user0 +l
+T002 CREATE INBOX.a
+T003 ACL STORE INBOX.a anyone +lr
+T004 append INBOX.a \Seen {22}
+Subject: user1
+
+user1
+
+T005 LOGOUT
+EOF
+
+env AUTHENTICATED=user2 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest3 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+T010 ACL STORE INBOX anyone +l
+T011 CREATE INBOX.a
+T012 append INBOX.a \Seen {22}
+Subject: user2
+
+user2
+
+T013 LOGOUT
+EOF
+
+env AUTHENTICATED=user0 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+T020 list(acl) "" "#shared.*"
+T021 ACL STORE INBOX anyone acdilrsw
+T022 list(acl) "" "#shared.%"
+T023 LOGOUT
+EOF
+
+env AUTHENTICATED=user2 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest3 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+T030 LIST "" "#shared.*"
+T031 LIST "" "#shared.%"
+T032 LIST "" "#shared.a.%"
+T033 LIST "" "#shared.c.%"
+T034 SELECT "#shared.a.user1"
+T035 SELECT "#shared.a.user1.a"
+T036 FETCH 1:* (ENVELOPE)
+T037 STATUS #shared.a.user1 (UIDVALIDITY)
+T038 COPY 1 #shared.user0
+T039 SELECT #shared.user0
+T040 CREATE #shared.a.user1.b
+T041 CREATE #shared.c
+T042 CREATE #shared.user0.foo
+T043 RENAME #shared.user0.foo #shared.user0.bar
+T044 LIST(ACL) "" "#shared.user0*"
+T045 ACL STORE #shared.a.user1.a anyone lr
+T046 CREATE #shared.user0.foo
+T047 ACL STORE #shared.user0.foo anyone alr
+T048 ACL STORE #shared.user0.bar anyone -x
+T049 RENAME #shared.user0.bar #shared.user0.foo.bar
+T050 ACL STORE #shared.user0.bar anyone +x
+T051 RENAME #shared.user0.bar #shared.user0.foo.bar
+T052 ACL STORE #shared.user0.foo anyone +c
+T053 RENAME #shared.user0.bar #shared.user0.foo.bar
+T054 LIST "" "#shared.user0*"
+TDONE LOGOUT
+EOF
+
+cat >confmdtest4/indexb <<EOF
+use&2 1 1 `pwd` confmdtest3
+user.2 1 1 `pwd` confmdtest3
+usér/3 1 1 `pwd` confmdtest3
+EOF
+
+env AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+T055 LIST "" "#shared.b.*"
+T056 LIST "" "#shared.b.%"
+T057 LIST "" "#shared.b.user 2.*"
+T058 LIST "" "#shared.b.use&-2.*"
+TDONE LOGOUT
+EOF
+
+env IMAP_SHAREDMUNGENAMES=1 AUTHENTICATED=user1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+T055 LIST "" "#shared.b.*"
+T056 LIST "" "#shared.b.%"
+T057 LIST "" "#shared.b.user\\\\:2.*"
+T058 LIST "" "#shared.b.use&-2.*"
+T059 CREATE INBOX.a.b
+T060 SELECT INBOX.a.b
+T061 RENAME INBOX.a INBOX.aa
+T062 CLOSE
+T063 RENAME INBOX.a INBOX.aa
+T064 RENAME INBOX INBOX.c
+T065 RENAME INBOX.aa #shared.user0.aa
+T066 LIST "" #shared.*
+T067 LIST "" #shared.%
+T068 LIST "" #shared.%
+T069 LIST "" #shared.%.%
+T070 LIST "" #shared.%.%.%
+T071 LIST "" #shared.%.%.%.%
+TDONE LOGOUT
+EOF
+
+echo "usergroup1 1 1 `pwd` confmdtest" >confmdtest4/indexgroup1 || exit 1
+
+env IMAP_SHAREDMUNGENAMES=1 AUTHENTICATED=user1 OPTIONS=sharedgroup=group1 IMAP_KEYWORDS=1 IMAP_MOVE_EXPUNGE_TO_TRASH=1 IMAP_BROKENUIDV=1 MAILDIR=confmdtest2 ./imapd <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g'
+T072 LIST "" #shared.*
+T073 LIST(ACL) "" INBOX
+T074 ACL STORE INBOX user=fred lr
+T075 ACL STORE INBOX -user=john lr
+T076 ACL STORE INBOX -authuser lr
+T077 GETACL INBOX
+T078 SETACL INBOX -authuser lcr
+T079 SETACL INBOX -john lcr
+T080 SETACL INBOX fred cr
+T081 GETACL INBOX
+T082 LIST(ACL) "" INBOX
+T083 DELETEACL INBOX -john
+T084 DELETEACL INBOX fred
+T085 GETACL INBOX
+T086 LIST(ACL) "" INBOX
+TDONE LOGOUT
+EOF
+