Import upstream v0.16.22, stripped

Upstream commit: 474dd0229cb20cf513036619781ed97bd8073c3f
Enterprise-only files removed or emptied: 63
Enterprise-only snippets removed: 117 in 50 files
Dangling module declarations removed: 5
Cargo edits turning enterprise off: 14
Verification: clean
Enterprise feature gates left for rebuilt features: 19 in 18 files

Produced by tools/fork/strip.py. The full report is in docs/fork/strip-reports/ on main.
This commit is contained in:
2026-09-18 10:21:56 -07:00
commit 7dae9b29fd
1650 changed files with 485521 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
connections: 3
state: created
1 ok select $mailbox
2 ok select $mailbox
# Two connections have mailbox SELECTed, one doesn't.
# The \recent flags can be given to either one of the SELECTed connections,
# but never for the 3rd. We rely on mailbox state tracking to catch duplicate
# \recent flags (which is why there are two FETCH FLAGS commands).
1 ok append $mailbox (\seen \flagged)
* 1 exists
2 ok noop
* 1 exists
3 ok status $mailbox (messages unseen recent)
* status $mailbox (messages 1 unseen 0 recent 0)
1 ok fetch 1 (uid flags)
* 1 fetch (uid $uid1 flags (\seen \flagged))
2 ok fetch 1 (uid flags)
* 1 fetch (uid $uid1 flags (\seen \flagged))
2 ok append
* 2 exists
1 ok noop
* 2 exists
3 ok status $mailbox (messages unseen recent)
* status $mailbox (messages 2 unseen 1 recent 0)
1 ok fetch 2 (uid flags)
2 ok fetch 2 (uid flags)
3 ok append
3 ok status $mailbox (messages unseen)
* status $mailbox (messages 3 unseen 2)
2 ok noop
* 3 exists
1 ok noop
* 3 exists
1 ok fetch 3 (uid flags)
2 ok fetch 3 (uid flags)
1 append ${mailbox}nonexistent
no [trycreate]
+39
View File
@@ -0,0 +1,39 @@
capabilities: BINARY
state: created
ok append $mailbox ~{{{
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
nil
}}}
ok select $mailbox
# should have been converted to base64, or something
ok fetch 1 (body.peek[1])
! 1 fetch (body[1] {{{
nil
}}})
! 1 fetch (body[1] {{{
nil
}}})
! 1 fetch (body[1] ~{{{
nil
}}})
ok fetch 1 (binary.size[1] binary.peek[1])
! 1 fetch (binary.size[1] 6 binary[1] ~{{{
nil
}}})
+13
View File
@@ -0,0 +1,13 @@
state: auth
# Don't confuse with ~{literal8}
ok list "" ~foo
no select ~foo
# atom-specials = "(" / ")" / "{" / SP / CTL / list-wildcards /
# quoted-specials / resp-specials
# quoted-specials = DQUOTE / "\"
# resp-specials = "]"
# list-wildcards = "%" / "*"
no select !#$$&'+,-.0123456789:;<=>?@^_`|[}
ok list "" !#$$&'+,-.0123456789:;<=>?@^_`|[}%*
@@ -0,0 +1,75 @@
# this test assumes that server stores INTERNALDATE timestamps in
# EET/EEST timezones (or stores/fetches them using the same timezones as
# they were APPENDed with)
# 1) Timezone changes from EET +0200 -> EEST +0300
# 1a) BEFORE
ok search before 24-mar-2007
* search
ok search before 25-mar-2007
* search 1
ok search before 26-mar-2007
* search 1 2 3 4 5 6
ok search before 27-mar-2007
* search 1 2 3 4 5 6 7
# 1b) ON
ok search on 23-mar-2007
* search
ok search on 24-mar-2007
* search 1
ok search on 25-mar-2007
* search 2 3 4 5 6
ok search on 26-mar-2007
* search 7
# 1c) SINCE
ok search 1:7 since 24-mar-2007
* search 1 2 3 4 5 6 7
ok search 1:7 since 25-mar-2007
* search 2 3 4 5 6 7
ok search 1:7 since 26-mar-2007
* search 7
ok search 1:7 since 27-mar-2007
* search
# 2) Timezone changes from EEST +0300 -> EET +0200
# 2a) BEFORE
ok search 8:* before 27-oct-2007
* search
ok search 8:* before 28-oct-2007
* search 8
ok search 8:* before 29-oct-2007
* search 8 9 10 11 12 13 14 15
ok search 8:* before 30-oct-2007
* search 8 9 10 11 12 13 14 15 16
# 2b) ON
ok search 8:* on 26-oct-2007
* search
ok search 8:* on 27-oct-2007
* search 8
ok search 8:* on 28-oct-2007
* search 9 10 11 12 13 14 15
ok search 8:* on 29-oct-2007
* search 16
# 2c) SINCE
ok search 8:* since 27-oct-2007
* search 8 9 10 11 12 13 14 15 16
ok search 8:* since 28-oct-2007
* search 9 10 11 12 13 14 15 16
ok search 8:* since 29-oct-2007
* search 16
ok search 8:* since 30-oct-2007
* search
# 3) Try a couple of NOTs
ok search 1:7 not before 26-mar-2007
* search 7
ok search 1:7 not on 25-mar-2007
* search 1 7
ok search 8:* not since 28-oct-2007
* search 8
ok search 8:* not on 28-oct-2007
* search 8 16
@@ -0,0 +1,80 @@
From user@domain Sat Mar 24 23:00:00 2007 +0200
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Mar 25 00:00:00 2007 +0200
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Mar 25 01:00:00 2007 +0200
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Mar 25 02:00:00 2007 +0200
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Mar 25 04:00:00 2007 +0300
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Mar 25 23:00:00 2007 +0300
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Mon Mar 26 00:00:00 2007 +0300
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sat Oct 27 23:00:00 2007 +0300
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Oct 28 00:00:00 2007 +0300
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Oct 28 01:00:00 2007 +0300
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Oct 28 02:00:00 2007 +0300
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Oct 28 03:00:00 2007 +0300
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Oct 28 03:00:00 2007 +0200
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Oct 28 04:00:00 2007 +0200
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Sun Oct 28 23:00:00 2007 +0200
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Mon Oct 29 00:00:00 2007 +0200
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
+235
View File
@@ -0,0 +1,235 @@
state: created
capabilities: CATENATE
"" delete ${mailbox}2
ok append $mailbox (\seen \flagged) catenate (text {{{
From: [email protected]
Hello world body
}}})
ok append $mailbox (\seen \flagged) catenate (text {{{
From: [email protected]
Lookslike: header
Another body
}}})
ok select $mailbox
* ok [uidvalidity $uidv]
ok fetch 1:2 (uid body.peek[])
* 1 fetch (uid $uid body[] {{{
From: [email protected]
Hello world body
}}})
* 2 fetch (uid $uid2 body[] {{{
From: [email protected]
Lookslike: header
Another body
}}})
ok create ${mailbox}2
ok append ${mailbox}2 (\seen \flagged) catenate (url "/$mailbox_url/;uid=$uid/;section=header" text {{{
body1
}}})
ok append ${mailbox}2 (\seen \flagged) catenate (url "/$mailbox_url;uidvalidity=$uidv/;uid=$uid/;section=header" text {{{
body2
}}})
ok append ${mailbox}2 (\seen \flagged) catenate (url "/$mailbox_url/;uid=$uid2/;section=text" text {{{
body3
}}})
ok append ${mailbox}2 (\seen \flagged) catenate (url "/$mailbox_url/;uid=$uid2/;section=1" text {{{
body4
}}})
ok append ${mailbox}2 (\seen \flagged) catenate (text {{{
From: [email protected]
Subject: test header
}}} url "/$mailbox_url/;uid=$uid/;section=1" text {{{
suffix
}}})
ok append ${mailbox}2 (\seen \flagged) catenate (text {{{
From: [email protected]
}}} text {{{
Subject: hdr2
}}} text {{{
body6
}}})
ok append ${mailbox}2 (\seen \flagged) catenate (url "/$mailbox_url/;uid=$uid2/;partial=100000.1" text {{{
Hdr: foo
body7
}}})
#
# Try invalid URLs
#
no append ${mailbox}2 (\seen \flagged) catenate (url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header" text {{{
body
}}})
no append ${mailbox}2 (\seen \flagged) catenate (text {{{
hdr: 1
}}} url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header")
no append ${mailbox}2 (\seen \flagged) catenate (text {{{
hdr: 1
}}} url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header" text {{{
hdr: 2
}}})
no append ${mailbox}2 (\seen \flagged) catenate (text {{{
hdr: 1
}}} url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header" text {{{
hdr: 2
}}} url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header" text {{{
hdr: 3
}}})
no append ${mailbox}2 (\seen \flagged) catenate (text {{{
hdr: 1
}}} url "/$mailbox_url/;uid=$uid/;section=header" text {{{
hdr: 2
}}} url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header" text {{{
hdr: 3
}}})
no append ${mailbox}2 (\seen \flagged) catenate (text {{{
hdr: 1
}}} url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header" text {{{
hdr: 2
}}} url "/$mailbox_url/;uid=$uid/;section=header" text {{{
hdr: 3
}}})
no append ${mailbox}2 (\seen \flagged) catenate (url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header" url "/$mailbox_url/;uid=$uid/;section=header")
no append ${mailbox}2 (\seen \flagged) catenate (url "/$mailbox_url/;uid=$uid/;section=header" url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header")
#
# verify previous appends
#
ok select ${mailbox}2
ok fetch 1:* body.peek[]
* 1 fetch (body[] {{{
From: [email protected]
body1
}}})
* 2 fetch (body[] {{{
From: [email protected]
body2
}}})
* 3 fetch (body[] {{{
Lookslike: header
Another body
body3
}}})
* 4 fetch (body[] {{{
Lookslike: header
Another body
body4
}}})
* 5 fetch (body[] {{{
From: [email protected]
Subject: test header
Hello world body
suffix
}}})
* 6 fetch (body[] {{{
From: [email protected]
Subject: hdr2
body6
}}})
* 7 fetch (body[] {{{
Hdr: foo
body7
}}})
#
# Try appending to nonexistent mailbox
#
append ${mailbox}nonexistent catenate (url "/$mailbox_url/;uid=$uid/;section=1")
no [trycreate]
append ${mailbox}nonexistent catenate (url "/$mailbox_url/;uid=$uid/;section=1" text {{{
hello
}}})
no [trycreate]
append ${mailbox}nonexistent catenate (text {{{
hello
}}} url "/$mailbox_url/;uid=$uid/;section=1")
no [trycreate]
append ${mailbox}nonexistent (\seen \flagged) catenate (text {{{
hdr1: 1
}}} url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header" text {{{
hdr2: 2
}}} url "/$mailbox_url/;uid=$uid/;section=header" text {{{
hdr3: 3
}}})
no [trycreate]
ok noop
@@ -0,0 +1,130 @@
state: created
capabilities: CATENATE MULTIAPPEND
ok append $mailbox catenate (text {{{
From: [email protected]
Hello world body
}}}) catenate (text {{{
From: [email protected]
Second body
}}})
ok select $mailbox
* ok [uidvalidity $uidv]
ok fetch 1:2 (uid body.peek[])
* 1 fetch (uid $uid body[] {{{
From: [email protected]
Hello world body
}}})
* 2 fetch (uid $uid2 body[] {{{
From: [email protected]
Second body
}}})
ok append ${mailbox} catenate (url "/$mailbox_url/;uid=$uid/;section=header" text {{{
body1
}}}) catenate (url "/$mailbox_url/;uid=$uid2/;section=header" text {{{
body2
}}})
ok append ${mailbox} catenate (url "/$mailbox_url/;uid=$uid") catenate (url "/$mailbox_url/;uid=$uid2/;section=header" text {{{
body3
}}})
ok append ${mailbox} catenate (url "/$mailbox_url/;uid=$uid") {{{
New: Message
body4
}}}
ok append ${mailbox} catenate (url "/$mailbox_url/;uid=$uid") (\answered) {{{
New: Message
body5
}}}
ok noop
ok fetch 3:* body.peek[]
* 3 fetch (body[] {{{
From: [email protected]
body1
}}})
* 4 fetch (body[] {{{
From: [email protected]
body2
}}})
* 5 fetch (body[] {{{
From: [email protected]
Hello world body
}}})
* 6 fetch (body[] {{{
From: [email protected]
body3
}}})
* 7 fetch (body[] {{{
From: [email protected]
Hello world body
}}})
* 8 fetch (body[] {{{
New: Message
body4
}}})
* 9 fetch (body[] {{{
From: [email protected]
Hello world body
}}})
* 10 fetch (body[] {{{
New: Message
body5
}}})
#
# Try invalid URLs
#
no append ${mailbox} (\seen \flagged) catenate (url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header") catenate (url "/$mailbox_url/;uid=$uid")
no append ${mailbox} (\seen \flagged) catenate (url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header") catenate (url "/$mailbox_url/;uid=$uid" text {{{
hello
}}})
no append ${mailbox} (\seen \flagged) catenate (url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header") catenate (text {{{
hello
}}})
no append ${mailbox} (\seen \flagged) catenate (url "/$mailbox_url;uidvalidity=12345/;uid=$uid/;section=header") {{{
hello
}}}
ok noop
+9
View File
@@ -0,0 +1,9 @@
connections: 2
messages: 3
1 ok store 1,3 +flags \deleted
1 ok close
2 ok noop
* $1 expunge
* $3 expunge
+48
View File
@@ -0,0 +1,48 @@
connections: 2
state: created
1 ok select ${mailbox}
1 ok append
1 ok append
1 ok append
1 ok append
1 ok append
# make sure the server sees the appended messages
1 ok check
2 "" delete ${mailbox}2
2 ok create ${mailbox}2
2 ok select ${mailbox}2
1 ok store 1 flags (\seen)
1 ok store 2 flags (\answered \flagged)
1 ok store 5 flags (\flagged $$keyword1 $$keyword2)
1 ok fetch 1:5 (internaldate)
* 1 fetch (internaldate $date1)
* 2 fetch (internaldate $date2)
* 4 fetch (internaldate $date4)
* 5 fetch (internaldate $date5)
1 ok copy 1:2,4 ${mailbox}2
2 ok noop
* 3 exists
#* 3 recent
2 ok fetch 1:3 (flags internaldate)
? 1 fetch (flags (\seen) internaldate $date1)
? 2 fetch (flags (\answered \flagged) internaldate $date2)
? 3 fetch (flags () internaldate $date4)
# keywords aren't required to be created on COPY, so help the server here
2 ok store 3 +flags ($$keyword1 $$keyword2)
1 ok copy 5 ${mailbox}2
2 ok noop
* 4 exists
2 ok fetch 4 (flags internaldate)
* 4 fetch (flags (\flagged $$keyword1 $$keyword2) internaldate $date5)
2 ok close
2 "" delete ${mailbox}2
+42
View File
@@ -0,0 +1,42 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s1
body1
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s22
body22
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s333
body33
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s4444
body4444
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s55555
body55555
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s666666
body666666
+76
View File
@@ -0,0 +1,76 @@
capabilities: ESEARCH
messages: all
ok store 4 +flags \deleted
ok expunge
# SEARCH ALL
ok search return (all) all
* esearch (tag $tag) all 1:6
ok search return () all
* esearch (tag $tag) all 1:6
ok search return (min) all
* esearch (tag $tag) min 1
ok search return (max) all
* esearch (tag $tag) max 6
ok search return (count) all
* esearch (tag $tag) count 6
# UID SEARCH ALL
ok fetch 1:* UID
* 1 fetch (uid $uid1)
* 2 fetch (uid $uid2)
* 3 fetch (uid $uid3)
* 4 fetch (uid $uid4)
* 5 fetch (uid $uid5)
* 6 fetch (uid $uid6)
ok uid search return (all) all
* esearch (tag $tag) uid all $uid1:$uid3,$uid4:$uid6
ok uid search return () all
* esearch (tag $tag) uid all $uid1:$uid3,$uid4:$uid6
ok uid search return (min) all
* esearch (tag $tag) uid min $uid1
ok uid search return (max) all
* esearch (tag $tag) uid max $uid6
ok uid search return (count) all
* esearch (tag $tag) uid count 6
# \Seen flag test
ok store 2,4 +flags \seen
ok uid search return (all) seen
* esearch (tag $tag) uid all $uid2,$uid4
ok uid search return () seen
* esearch (tag $tag) uid all $uid2,$uid4
ok uid search return (min) seen
* esearch (tag $tag) uid min $uid2
ok uid search return (max) seen
* esearch (tag $tag) uid max $uid4
ok uid search return (count) seen
* esearch (tag $tag) uid count 2
# nonexistent
ok search return () 1000
* esearch (tag $tag)
ok search return (min) 1000
* esearch (tag $tag)
ok search return (max) 1000
* esearch (tag $tag)
ok search return (count) 1000
* esearch (tag $tag) count 0
# UID nonexistent
ok uid search return () 1000
* esearch (tag $tag) uid
ok uid search return (min) 1000
* esearch (tag $tag) uid
ok uid search return (max) 1000
* esearch (tag $tag) uid
ok uid search return (count) 1000
* esearch (tag $tag) uid count 0
@@ -0,0 +1,38 @@
capabilities: ESEARCH CONDSTORE
messages: 4
# ENABLE is valid only in authenticated state. we could do enable+select
# manually here also, but lets just make sure that switching it on via
# condstore-enabling command works as well (since that is valid)
ok fetch 1 modseq
* ok [highestmodseq $highestmodseq]
ok store 1 +flags \seen
* 1 fetch (modseq ($modseq1))
ok store 3 +flags \seen
* 3 fetch (modseq ($modseq3))
ok store 2 +flags \seen
* 2 fetch (modseq ($modseq2))
ok store 4 +flags \seen
* 4 fetch (modseq ($modseq4))
ok search return (min) 1:3 modseq "/flags/\\seen" all $highestmodseq
* esearch (tag $tag) min 1 modseq $modseq4
ok search return (max) 1:3 modseq "/flags/\\seen" all $highestmodseq
* esearch (tag $tag) max 3 modseq $modseq4
ok search return () 1:3 modseq "/flags/\\seen" all $highestmodseq
* esearch (tag $tag) all 1:3 modseq $modseq4
ok search return (min max) 2:3 modseq "/flags/\\seen" all $highestmodseq
* esearch (tag $tag) min 2 max 3 modseq $modseq4
ok search return (all) 2:4 modseq "/flags/\\seen" all $modseq3
* esearch (tag $tag) all 2,4 modseq $modseq4
ok search return (all) 2:4 modseq "/flags/\\seen" all $modseq2
* esearch (tag $tag) all 4 modseq $modseq4
ok search return (all) 2:4 modseq "/flags/\\seen" all $modseq4
* esearch (tag $tag) modseq $modseq4
+28
View File
@@ -0,0 +1,28 @@
From user@domain Fri Feb 22 17:06:21 2008
1
From user@domain Fri Feb 22 17:06:22 2008
2
From user@domain Fri Feb 22 17:06:23 2008
3
From user@domain Fri Feb 22 17:06:23 2008
4
From user@domain Fri Feb 22 17:06:25 2008
5
From user@domain Fri Feb 22 17:06:25 2008
6
From user@domain Fri Feb 22 17:06:25 2008
7
+11
View File
@@ -0,0 +1,11 @@
capabilities: ESORT
messages: 5
ok sort return (min) (arrival) us-ascii 1:5
* esearch (tag $tag) min 1
ok sort return (max) (arrival) us-ascii 1:5
* esearch (tag $tag) max 5
ok sort return (all) (arrival) us-ascii 1:5
* esearch (tag $tag) all 1:5
ok sort return (count) (arrival) us-ascii 1:5
* esearch (tag $tag) count 5
+62
View File
@@ -0,0 +1,62 @@
connections: 2
messages: 8
# get UIDs
1 ok fetch 1:4 uid
* 1 fetch (uid $uid1)
* 2 fetch (uid $uid2)
* 3 fetch (uid $uid3)
* 4 fetch (uid $uid4)
# 1) test that expunges work ok and session 2 fetch sees 1's flag changes.
1 ok store 1,3 flags \deleted
* 1 fetch (flags (\deleted))
* 3 fetch (flags (\deleted))
1 ok store 2,4 flags \seen
* 2 fetch (flags (\seen))
* 4 fetch (flags (\seen))
1 ok expunge
* $1 expunge
* $3 expunge
2 ok fetch 2,4 (uid)
* 2 fetch (uid $uid2)
* 4 fetch (uid $uid4)
2 ok fetch 2,4 (uid)
* 2 fetch (uid $uid2)
* 4 fetch (uid $uid4)
2 ok check
* $1 expunge
* $3 expunge
2 ok fetch 1:2 (uid flags)
* 1 fetch (uid $uid2 flags (\seen))
* 2 fetch (uid $uid4 flags (\seen))
# 2) test that session 2 can update flags while some messages are expunged
1 ok store 2 +flags \deleted
1 ok expunge
2 ok store 1 flags \answered
* 1 fetch (flags (\answered))
1 ok check
* 1 fetch (flags (\answered))
2 ok noop
* 2 expunge
# 3) check notices flag changes correctly with expunges
1 ok store 1,3 +flags \deleted
1 ok store 2,4 flags \flagged
1 ok expunge
2 ok check
* $1 expunge
* $2 fetch (flags (\flagged))
* $3 expunge
* $4 fetch (flags (\flagged))
# 4) expunging while message is already expunged
1 ok store 1 +flags \deleted
2 ok store 1 +flags \deleted
1 ok expunge
* 1 expunge
2 ok expunge
* 1 expunge
+44
View File
@@ -0,0 +1,44 @@
connections: 2
messages: 6
1 ok fetch 2,4 uid
* 2 fetch (uid $uid2)
* 4 fetch (uid $uid4)
# UID FETCH
1 ok store 1,3 +flags \deleted
1 ok expunge
* $1 expunge
* $3 expunge
2 ok uid fetch $uid2,$uid4 uid
* $2 fetch (uid $uid2)
* $4 fetch (uid $uid4)
2 ok noop
# UID STORE
1 ok store 1 +flags \deleted
1 ok expunge
* 1 expunge
2 ok uid store $uid4 flags \seen
* $2 fetch (uid $uid4 flags (\seen))
2 ok noop
# Make sure CHECK works just as well as NOOP
1 ok store 1 +flags \deleted
1 ok expunge
* 1 expunge
2 ok check
* 1 expunge
# Make sure FETCH, STORE and SEARCH don't trigger EXPUNGE
1 ok store 1 +flags \deleted
1 ok expunge
2 ok fetch 2 flags
! $1 expunge
2 ok store 2 flags (\seen)
! $1 expunge
2 ok search all
! $1 expunge
+54
View File
@@ -0,0 +1,54 @@
messages: 3
ok status $mailbox (uidnext)
* status $mailbox (uidnext $uidnext)
ok fetch 1:3 uid
* 1 fetch (uid $uid1)
* 2 fetch (uid $uid2)
* 3 fetch (uid $uid3)
ok fetch 3:1 uid
* 1 fetch (uid $uid1)
* 2 fetch (uid $uid2)
* 3 fetch (uid $uid3)
ok fetch 1,* uid
* 1 fetch (uid $uid1)
* 3 fetch (uid $uid3)
ok fetch * uid
* 3 fetch (uid $uid3)
ok fetch *:1 uid
* 1 fetch (uid $uid1)
* 2 fetch (uid $uid2)
* 3 fetch (uid $uid3)
ok uid fetch $uidnext:* uid
* 3 fetch (uid $uid3)
# break seq=uid map
ok store 2 flags \deleted
ok expunge
* 2 expunge
ok uid fetch $uidnext:* uid
* 2 fetch (uid $uid3)
ok uid fetch 1:* uid
* 1 fetch (uid $uid1)
* 2 fetch (uid $uid3)
ok uid fetch $uid2 uid
! 1 fetch (uid $uid1)
! 2 fetch (uid $uid3)
ok uid fetch $uid1,* uid
* 1 fetch (uid $uid1)
* 2 fetch (uid $uid3)
# test macros
ok fetch 1 full
* 1 fetch (flags () internaldate $intdate1 rfc822.size $size1 envelope ($!unordered) body ($!unordered))
ok fetch 1 all
* 1 fetch (flags () internaldate $intdate1 rfc822.size $size1 envelope ($!unordered))
ok fetch 1 fast
* 1 fetch (flags () internaldate $intdate1 rfc822.size $size1)
+104
View File
@@ -0,0 +1,104 @@
capabilities: BINARY
messages: all
# This is the fetch-body-mime test, except with body[] changed to binary[].
# The idea is to verify that binary[] works correctly when it doesn't actually
# have to convert anything.
ok fetch 1 (binary.peek[])
* 1 fetch (binary[] {{{
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="foo
bar"
Root MIME prologue
--foo bar
Content-Type: text/x-myown; charset=us-ascii
hello
--foo bar
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/alternative; boundary="sub1"
Sub MIME prologue
--sub1
Content-Type: text/html
<p>Hello world</p>
--sub1
Content-Type: text/plain
Hello another world
--sub1--
Sub MIME epilogue
--foo bar--
Root MIME epilogue
}}})
ok fetch 1 (binary.size[])
* 1 fetch (binary.size[] 602)
ok fetch 1 (binary.size[1])
* 1 fetch (binary.size[1] 7)
ok fetch 1 (binary.peek[1])
* 1 fetch (binary[1] {{{
hello
}}})
ok fetch 1 (binary.peek[2])
* 1 fetch (binary[2] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/alternative; boundary="sub1"
Sub MIME prologue
--sub1
Content-Type: text/html
<p>Hello world</p>
--sub1
Content-Type: text/plain
Hello another world
--sub1--
Sub MIME epilogue
}}})
ok fetch 1 (binary.size[2])
* 1 fetch (binary.size[2] 298)
ok fetch 1 (binary.size[2.1])
* 1 fetch (binary.size[2.1] 20)
ok fetch 1 (binary.peek[2.1])
* 1 fetch (binary[2.1] {{{
<p>Hello world</p>
}}})
ok fetch 1 (binary.peek[2.2])
* 1 fetch (binary[2.2] {{{
Hello another world
}}})
ok fetch 1 (binary.size[2.2])
* 1 fetch (binary.size[2.2] 21)
@@ -0,0 +1,67 @@
capabilities: BINARY
messages: all
ok fetch 1 (binary.size[1] binary.size[5])
* 1 fetch (binary.size[1] 11 binary.size[5] 30)
ok fetch 1 (binary.peek[1] binary.peek[2] binary.peek[3] binary.peek[4] binary.peek[5])
* 1 fetch (binary[1] {{{
hello world
}}} binary[2] {{{
hello world
}}} binary[3] {{{
hello to you too
}}} binary[4] {{{
hello to everyone!
}}} binary[5] ~{{{
abcdefg␍hijkl
mno
pqrstuvqxyz
}}})
ok fetch 1 (binary.size[1] binary.peek[1])
* 1 fetch (binary.size[1] 11 binary[1] {{{
hello world
}}})
ok fetch 1 (binary.size[3] binary.peek[2])
* 1 fetch (binary.size[3] 16 binary[2] {{{
hello world
}}})
ok fetch 1 (binary.size[2] binary.size[3] binary.size[4])
* 1 fetch (binary.size[2] 11 binary.size[3] 16 binary.size[4] 18)
ok fetch 1 (binary.peek[5]<0.7>)
* 1 fetch (binary[5]<0> ~{{{
abcdefg
}}})
ok fetch 1 (binary.peek[5]<0.8>)
* 1 fetch (binary[5]<0> ~{{{
abcdefg
}}})
ok fetch 1 (binary.peek[5]<0.10>)
* 1 fetch (binary[5]<0> ~{{{
abcdefg␍hi
}}})
ok fetch 1 (binary.peek[5]<10.10>)
* 1 fetch (binary[5]<10> ~{{{
jkl
mno
p
}}})
ok fetch 1 (binary.peek[5]<5.10>)
* 1 fetch (binary[5]<5> ~{{{
fg␍hijkl
}}})
ok fetch 1 (binary.peek[5]<15.100>)
* 1 fetch (binary[5]<15> ~{{{
mno
pqrstuvqxyz
}}})
@@ -0,0 +1,49 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="foo
bar"
Root MIME prologue
--foo bar
Content-Type: text/x-myown; charset=us-ascii
Content-Transfer-Encoding: base64
aGVs
bG8gd29y
bGQ=
--foo bar
Content-Type: text/x-myown; charset=us-ascii
Content-Transfer-Encoding: base64
aGVs
bG8g
d29y
bGQ=
--foo bar
Content-Type: text/x-myown; charset=us-ascii
Content-Transfer-Encoding: base64
aGVsbG8g
dG8geW91IHRv
bw==
--foo bar
Content-Type: text/x-myown; charset=us-ascii
Content-Transfer-Encoding: base64
aGVsbG8gdG8gZXZlcnlvbmUh
--foo bar
Content-Type: text/x-myown; charset=us-ascii
Content-Transfer-Encoding: base64
YWJjZGVmZw1oaWprbA0KbW5vCnBxcnN0dXZxeHl6
--foo bar--
Root MIME epilogue
@@ -0,0 +1,54 @@
capabilities: BINARY
messages: all
ok fetch 1 (binary.size[1])
* 1 fetch (binary.size[1] 65)
ok fetch 1 (binary.peek[1])
* 1 fetch (binary[1] {{{
hello
bar
foo bar
foo b
foo bar
foo b
foo
bar
foo_bar
}}})
ok fetch 1 (binary.peek[1]<0.10>)
* 1 fetch (binary[1]<0> {{{
hello
bar
}}})
ok fetch 1 (binary.peek[1]<10.10>)
* 1 fetch (binary[1]<10> ~{{{
foo bar
}}})
ok fetch 1 (binary.peek[1]<20.10>)
* 1 fetch (binary[1]<20> ~{{{
foo b
}}})
ok fetch 1 (binary.peek[1]<15.10>)
* 1 fetch (binary[1]<15> ~{{{
bar
foo
}}})
ok fetch 1 (binary.peek[1]<40.100>)
* 1 fetch (binary[1]<40> {{{
oo b
foo
bar
foo_bar
}}})
@@ -0,0 +1,31 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="foo
bar"
Root MIME prologue
--foo bar
Content-Type: text/x-myown; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
hello
bar=
foo =
bar
foo =
=62
foo =
bar
foo =
=62
foo
bar=
foo_bar
--foo bar--
Root MIME epilogue
@@ -0,0 +1,38 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="foo
bar"
Root MIME prologue
--foo bar
Content-Type: text/x-myown; charset=us-ascii
hello
--foo bar
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/alternative; boundary="sub1"
Sub MIME prologue
--sub1
Content-Type: text/html
<p>Hello world</p>
--sub1
Content-Type: text/plain
Hello another world
--sub1--
Sub MIME epilogue
--foo bar--
Root MIME epilogue
+122
View File
@@ -0,0 +1,122 @@
messages: all
# header and body fetches
ok fetch 1 rfc822.header
* 1 fetch (rfc822.header $hdr1)
ok fetch 1 body.peek[header]
* 1 fetch (body[header] $hdr1)
ok fetch 1 (flags body.peek[text])
* 1 fetch (flags () body[text] {{{
body1
}}})
ok fetch 1 rfc822.text
* 1 fetch (rfc822.text {{{
body1
}}})
* 1 fetch (flags (\seen))
ok fetch 2 (flags body.peek[])
* 2 fetch (flags () body[] $full2)
ok fetch 2 rfc822
* 2 fetch (rfc822 $full2)
* 2 fetch (flags (\seen))
ok fetch 3 (body[])
* 3 fetch (body[] $full3)
* 3 fetch (flags (\seen))
ok fetch 4 (body[header])
* 4 fetch (body[header] $hdr4)
* 4 fetch (flags (\seen))
# partial fetches
ok fetch 2 body.peek[text]<0.3>
* 2 fetch (body[text]<0> "bod")
ok fetch 2 body.peek[text]<3.3>
* 2 fetch (body[text]<3> "y22")
ok fetch 3 body.peek[text]<0.1>
* 3 fetch (body[text]<0> "b")
ok fetch 3 body.peek[text]<5.1>
* 3 fetch (body[text]<5> "3")
ok fetch 3 body.peek[text]<5.2>
* 3 fetch (body[text]<5> ~{{{
3
}}})
ok fetch 3 body.peek[text]<5.3>
* 3 fetch (body[text]<5> ~{{{
3
}}})
ok fetch 3 body.peek[text]<6.1>
* 3 fetch (body[text]<6> ~{{{
}}})
ok fetch 3 body.peek[text]<6.2>
* 3 fetch (body[text]<6> ~{{{
}}})
ok fetch 3 body.peek[text]<7.1>
* 3 fetch (body[text]<7> ~{{{
}}})
# header fields
ok fetch 1 body.peek[header.fields (from)]
* 1 fetch (body[header.fields (from)] {{{
From: User1 <[email protected]>
}}})
ok fetch 1 (body.peek[header.fields (from)])
* 1 fetch (body[header.fields (from)] {{{
From: User1 <[email protected]>
}}})
ok fetch 1 (body.peek[header.fields (from from)])
* 1 fetch (body[header.fields (from from)] {{{
From: User1 <[email protected]>
}}})
ok fetch 1 body.peek[header.fields (from subject)]
* 1 fetch (body[header.fields (from subject)] {{{
From: User1 <[email protected]>
Subject: s1
}}})
ok fetch 1 body.peek[header.fields.not (date)]
! 1 fetch (body[header.fields.not (date)] {{{
From: User1 <[email protected]>
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s1
}}})
ok fetch 1 body.peek[header.fields.not (date date)]
! 1 fetch (body[header.fields.not (date date)] {{{
From: User1 <[email protected]>
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s1
}}})
ok fetch 1 body.peek[header.fields (xyz)]
* 1 fetch (body[header.fields (xyz)] {{{
}}})
@@ -0,0 +1,73 @@
messages: all
ok fetch 1 (body.peek[])
* 1 fetch (body[] {{{
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
}}})
ok fetch 1 (body.peek[text])
* 1 fetch (body[text] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
}}})
ok fetch 1 (body.peek[1])
* 1 fetch (body[1] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
}}})
ok fetch 1 (body.peek[1.1])
* 1 fetch (body[1.1] {{{
Hello world
}}})
ok fetch 1 (body.peek[1.header])
* 1 fetch (body[1.header] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
}}})
ok fetch 1 (body.peek[1.header.fields (from subject X-foo)])
* 1 fetch (body[1.header.fields (from subject X-foo)] {{{
From: [email protected]
Subject: submsg
}}})
ok fetch 1 (body.peek[1.header.fields.not (from subject X-foo)])
* 1 fetch (body[1.header.fields.not (from subject X-foo)] {{{
Date: Sun, 12 Aug 2012 12:34:56 +0300
}}})
ok fetch 1 (body.peek[1.text])
* 1 fetch (body[1.text] {{{
Hello world
}}})
@@ -0,0 +1,185 @@
messages: all
ok fetch 1 (body.peek[])
* 1 fetch (body[] {{{
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/digest; boundary="foo"
prologue
--foo
From: [email protected]
Subject: m1
m1 body
--foo
Content-Custom: m2 header
From: [email protected]
Subject: m2
m2 body
--foo--
}}})
ok fetch 1 (body.peek[text])
* 1 fetch (body[text] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/digest; boundary="foo"
prologue
--foo
From: [email protected]
Subject: m1
m1 body
--foo
Content-Custom: m2 header
From: [email protected]
Subject: m2
m2 body
--foo--
}}})
ok fetch 1 (body.peek[1])
* 1 fetch (body[1] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/digest; boundary="foo"
prologue
--foo
From: [email protected]
Subject: m1
m1 body
--foo
Content-Custom: m2 header
From: [email protected]
Subject: m2
m2 body
--foo--
}}})
ok fetch 1 (body.peek[1.header])
* 1 fetch (body[1.header] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/digest; boundary="foo"
}}})
ok fetch 1 (body.peek[1.text])
* 1 fetch (body[1.text] {{{
prologue
--foo
From: [email protected]
Subject: m1
m1 body
--foo
Content-Custom: m2 header
From: [email protected]
Subject: m2
m2 body
--foo--
}}})
ok fetch 1 (body.peek[1.1])
* 1 fetch (body[1.1] {{{
From: [email protected]
Subject: m1
m1 body
}}})
ok fetch 1 (body.peek[1.1.MIME])
* 1 fetch (body[1.1.MIME] {{{
}}})
ok fetch 1 (body.peek[1.1.HEADER])
* 1 fetch (body[1.1.HEADER] {{{
From: [email protected]
Subject: m1
}}})
ok fetch 1 (body.peek[1.1.TEXT])
* 1 fetch (body[1.1.TEXT] {{{
m1 body
}}})
ok fetch 1 (body.peek[1.2])
* 1 fetch (body[1.2] {{{
From: [email protected]
Subject: m2
m2 body
}}})
ok fetch 1 (body.peek[1.2.MIME])
* 1 fetch (body[1.2.MIME] {{{
Content-Custom: m2 header
}}})
ok fetch 1 (body.peek[1.2.HEADER])
* 1 fetch (body[1.2.HEADER] {{{
From: [email protected]
Subject: m2
}}})
ok fetch 1 (body.peek[1.2.TEXT])
* 1 fetch (body[1.2.TEXT] {{{
m2 body
}}})
@@ -0,0 +1,30 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/digest; boundary="foo"
prologue
--foo
From: [email protected]
Subject: m1
m1 body
--foo
Content-Custom: m2 header
From: [email protected]
Subject: m2
m2 body
--foo--
@@ -0,0 +1,103 @@
messages: all
ok fetch 1 (body.peek[])
* 1 fetch (body[] {{{
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Fri, 23 Mar 2007 11:22:33 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
}}})
ok fetch 1 (body.peek[text])
* 1 fetch (body[text] {{{
From: [email protected]
Date: Fri, 23 Mar 2007 11:22:33 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
}}})
ok fetch 1 (body.peek[1])
* 1 fetch (body[1] {{{
From: [email protected]
Date: Fri, 23 Mar 2007 11:22:33 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
}}})
ok fetch 1 (body.peek[1.1])
* 1 fetch (body[1.1] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
}}})
ok fetch 1 (body.peek[1.header])
* 1 fetch (body[1.header] {{{
From: [email protected]
Date: Fri, 23 Mar 2007 11:22:33 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
}}})
ok fetch 1 (body.peek[1.text])
* 1 fetch (body[1.text] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
}}})
ok fetch 1 (body.peek[1.1.1])
* 1 fetch (body[1.1.1] {{{
Hello world
}}})
ok fetch 1 (body.peek[1.1.header])
* 1 fetch (body[1.1.header] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
}}})
ok fetch 1 (body.peek[1.1.text])
* 1 fetch (body[1.1.text] {{{
Hello world
}}})
@@ -0,0 +1,16 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Fri, 23 Mar 2007 11:22:33 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
@@ -0,0 +1,11 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Hello world
+193
View File
@@ -0,0 +1,193 @@
messages: all
ok fetch 1 (body.peek[])
* 1 fetch (body[] {{{
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="foo
bar"
Root MIME prologue
--foo bar
Content-Type: text/x-myown; charset=us-ascii
hello
--foo bar
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/alternative; boundary="sub1"
Sub MIME prologue
--sub1
Content-Type: text/html
<p>Hello world</p>
--sub1
Content-Type: text/plain
Hello another world
--sub1--
Sub MIME epilogue
--foo bar--
Root MIME epilogue
}}})
ok fetch 1 (body.peek[text])
* 1 fetch (body[text] {{{
Root MIME prologue
--foo bar
Content-Type: text/x-myown; charset=us-ascii
hello
--foo bar
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/alternative; boundary="sub1"
Sub MIME prologue
--sub1
Content-Type: text/html
<p>Hello world</p>
--sub1
Content-Type: text/plain
Hello another world
--sub1--
Sub MIME epilogue
--foo bar--
Root MIME epilogue
}}})
ok fetch 1 (body.peek[1])
* 1 fetch (body[1] {{{
hello
}}})
ok fetch 1 (body.peek[1.mime])
* 1 fetch (body[1.mime] {{{
Content-Type: text/x-myown; charset=us-ascii
}}})
ok fetch 1 (body.peek[2])
* 1 fetch (body[2] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/alternative; boundary="sub1"
Sub MIME prologue
--sub1
Content-Type: text/html
<p>Hello world</p>
--sub1
Content-Type: text/plain
Hello another world
--sub1--
Sub MIME epilogue
}}})
ok fetch 1 (body.peek[2.mime])
* 1 fetch (body[2.mime] {{{
Content-Type: message/rfc822
}}})
ok fetch 1 (body.peek[2.header])
* 1 fetch (body[2.header] {{{
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/alternative; boundary="sub1"
}}})
ok fetch 1 (body.peek[2.header.fields (from subject X-foo)])
* 1 fetch (body[2.header.fields (from subject X-foo)] {{{
From: [email protected]
Subject: submsg
}}})
ok fetch 1 (body.peek[2.header.fields.not (from subject X-foo)])
* 1 fetch (body[2.header.fields.not (from subject X-foo)] {{{
Date: Sun, 12 Aug 2012 12:34:56 +0300
Content-Type: multipart/alternative; boundary="sub1"
}}})
ok fetch 1 (body.peek[2.text])
* 1 fetch (body[2.text] {{{
Sub MIME prologue
--sub1
Content-Type: text/html
<p>Hello world</p>
--sub1
Content-Type: text/plain
Hello another world
--sub1--
Sub MIME epilogue
}}})
ok fetch 1 (body.peek[2.1.mime])
* 1 fetch (body[2.1.mime] {{{
Content-Type: text/html
}}})
ok fetch 1 (body.peek[2.1])
* 1 fetch (body[2.1] {{{
<p>Hello world</p>
}}})
ok fetch 1 (body.peek[2.2.mime])
* 1 fetch (body[2.2.mime] {{{
Content-Type: text/plain
}}})
ok fetch 1 (body.peek[2.2])
* 1 fetch (body[2.2] {{{
Hello another world
}}})
@@ -0,0 +1,38 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="foo
bar"
Root MIME prologue
--foo bar
Content-Type: text/x-myown; charset=us-ascii
hello
--foo bar
Content-Type: message/rfc822
From: [email protected]
Date: Sun, 12 Aug 2012 12:34:56 +0300
Subject: submsg
Content-Type: multipart/alternative; boundary="sub1"
Sub MIME prologue
--sub1
Content-Type: text/html
<p>Hello world</p>
--sub1
Content-Type: text/plain
Hello another world
--sub1--
Sub MIME epilogue
--foo bar--
Root MIME epilogue
+28
View File
@@ -0,0 +1,28 @@
From user@domain Fri Feb 22 17:06:23 2008
From: User1 <[email protected]>
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s1
body1
From user@domain Fri Feb 22 17:06:23 2008
From: User2 <[email protected]>
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s22
body22
From user@domain Fri Feb 22 17:06:23 2008
From: User3 <[email protected]>
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s333
body33
From user@domain Fri Feb 22 17:06:23 2008
From: User4 <[email protected]>
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: s4444
body4444
@@ -0,0 +1,4 @@
messages: all
ok fetch 1:* body
* 1 FETCH (BODY (("TEXT" "x-MYOWN" ("CHARSET" "us-ascii") NIL NIL "7BIT" 7 1) "MIXED"))
@@ -0,0 +1,13 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="foo
bar"
--foo bar
Content-Type: text/x-myown; charset=us-ascii
hello
--foo bar--
+10
View File
@@ -0,0 +1,10 @@
messages: all
# date, subject, from, sender, reply-to, to, cc, bcc, in-reply-to, message-id
ok fetch 1:* envelope
* 1 FETCH (ENVELOPE ("Thu, 15 Feb 2007 01:02:03 +0200" "subject header" (("From Real" NIL "fromuser" "fromdomain.org")) (("Sender Real" NIL "senderuser" "senderdomain.org")) (("ReplyTo Real" NIL "replytouser" "replytodomain.org")) (("To Real" NIL "touser" "todomain.org")) (("Cc Real" NIL "ccuser" "ccdomain.org")) (("Bcc Real" NIL "bccuser" "bccdomain.org")) "<[email protected]>" "<msg@id>"))
* 2 FETCH (ENVELOPE ("Thu, 15 Feb 2007 01:02:03 +0200" NIL ((NIL NIL "user" "domain")) ((NIL NIL "user" "domain")) ((NIL NIL "user" "domain")) NIL NIL NIL NIL NIL))
* 3 FETCH (ENVELOPE ("Thu, 15 Feb 2007 01:02:03 +0200" NIL ((NIL NIL "user" "domain")) ((NIL NIL "user" "domain")) ((NIL NIL "user" "domain")) NIL NIL NIL NIL NIL))
* 4 FETCH (ENVELOPE ("Thu, 15 Feb 2007 01:02:03 +0200" NIL (("Real Name" NIL "user" "domain")) (("Real Name" NIL "user" "domain")) (("Real Name" NIL "user" "domain")) ((NIL NIL "group" NIL)(NIL NIL "g1" "d1.org")(NIL NIL "g2" "d2.org")(NIL NIL NIL NIL)(NIL NIL "group2" NIL)(NIL NIL "g3" "d3.org")(NIL NIL NIL NIL)) ((NIL NIL "group" NIL)(NIL NIL NIL NIL)(NIL NIL "group2" NIL)(NIL NIL NIL NIL)) NIL NIL NIL))
* 5 FETCH (ENVELOPE ("Thu, 15 Feb 2007 01:02:03 +0200" NIL (("Real Name" NIL "user" "domain")) (("Real Name" NIL "user" "domain")) (("Real Name" NIL "user" "domain")) NIL NIL NIL NIL NIL))
* 6 FETCH (ENVELOPE ("Thu, 15 Feb 2007 01:02:03 +0200" NIL ((NIL "@route" "user" "domain")) ((NIL "@route" "user" "domain")) ((NIL "@route" "user" "domain")) NIL NIL NIL NIL NIL))
@@ -0,0 +1,47 @@
From user@domain Fri Feb 22 17:06:23 2008
Message-ID: <msg@id>
In-Reply-To: <[email protected]>
Date: Thu, 15 Feb 2007 01:02:03 +0200
Subject: subject header
From: From Real <[email protected]>
To: To Real <[email protected]>
Cc: Cc Real <[email protected]>
Bcc: Bcc Real <[email protected]>
Sender: Sender Real <[email protected]>
Reply-To: ReplyTo Real <[email protected]>
body
From user@domain Fri Feb 22 17:06:23 2008
Date: Thu, 15 Feb 2007 01:02:03 +0200
From: user@domain
body
From user@domain Fri Feb 22 17:06:23 2008
Date: Thu, 15 Feb 2007 01:02:03 +0200
From: user@domain
body
From user@domain Fri Feb 22 17:06:23 2008
Date: Thu, 15 Feb 2007 01:02:03 +0200
From: user@domain (Real Name)
To: group: [email protected], [email protected];, group2: [email protected];
Cc: group:;, group2: (foo) ;
body
From user@domain Fri Feb 22 17:06:23 2008
Date: Thu, 15 Feb 2007 01:02:03 +0200
From: user@domain (Real Name)
Sender:
Reply-To:
body
From user@domain Fri Feb 22 17:06:23 2008
Date: Thu, 15 Feb 2007 01:02:03 +0200
From: <@route:user@domain>
body
File diff suppressed because one or more lines are too long
+79
View File
@@ -0,0 +1,79 @@
connections: 3
state: auth
# get the separator
1 ok list "" ""
* list () $sep $root
# it should be \noselect, but don't fail everything if it doesn't exist
* list (\noselect) $sep $root
1 ok create $mailbox${sep}
1 ok create $mailbox${sep}test
2 ok list "" $mailbox${sep}%
* list () $sep $mailbox${sep}test
2 ok create $mailbox${sep}test2
1 ok list "" $mailbox${sep}%
* list () $sep $mailbox${sep}test
* list () $sep $mailbox${sep}test2
3 ok create $mailbox${sep}test3${sep}
2 ok create $mailbox${sep}test3${sep}test4${sep}
2 ok create $mailbox${sep}test3${sep}test4${sep}test5
2 ok list "" $mailbox${sep}%
* list () $sep $mailbox${sep}test
* list () $sep $mailbox${sep}test2
* list () $sep $mailbox${sep}test3
! list () $sep $mailbox${sep}test3${sep}test4
! list () $sep $mailbox${sep}test3${sep}test4${sep}test5
3 ok list "" $mailbox${sep}%
* list () $sep $mailbox${sep}test
* list () $sep $mailbox${sep}test2
* list () $sep $mailbox${sep}test3
2 ok list "" $mailbox${sep}%${sep}%
! list () $sep $mailbox${sep}test
! list () $sep $mailbox${sep}test2
! list () $sep $mailbox${sep}test3
* list () $sep $mailbox${sep}test3${sep}test4
! list () $sep $mailbox${sep}test3${sep}test4${sep}test5
3 ok list "" $mailbox${sep}*
* list () $sep $mailbox${sep}test
* list () $sep $mailbox${sep}test2
* list () $sep $mailbox${sep}test3
* list () $sep $mailbox${sep}test3${sep}test4${sep}test5
3 ok list $mailbox${sep} *
* list () $sep $mailbox${sep}test
* list () $sep $mailbox${sep}test2
* list () $sep $mailbox${sep}test3
* list () $sep $mailbox${sep}test3${sep}test4${sep}test5
2 ok list "" $mailbox${sep}*test4
! list () $sep $mailbox${sep}test
! list () $sep $mailbox${sep}test2
! list () $sep $mailbox${sep}test3
* list () $sep $mailbox${sep}test3${sep}test4
! list () $sep $mailbox${sep}test3${sep}test4${sep}test5
2 ok list "" $mailbox${sep}*test*
* list () $sep $mailbox${sep}test
* list () $sep $mailbox${sep}test2
* list () $sep $mailbox${sep}test3
* list () $sep $mailbox${sep}test3${sep}test4${sep}test5
2 ok list "" $mailbox${sep}%3${sep}%
* list () $sep $mailbox${sep}test3${sep}test4
2 ok list "" $mailbox${sep}%3${sep}%4
* list () $sep $mailbox${sep}test3${sep}test4
2 ok list "" $mailbox${sep}%t*4
* list () $sep $mailbox${sep}test3${sep}test4
2 ok delete $mailbox${sep}test2
1 ok list "" $mailbox${sep}*
! list () $sep $mailbox${sep}test2
1 ok list "" INBOX
* list () $inboxsep INBOX
+95
View File
@@ -0,0 +1,95 @@
state: auth
capabilities: LIST-EXTENDED
# get the separator
ok list "" ""
* list () $sep ""
ok create $mailbox${sep}
ok create $mailbox${sep}test1
ok create $mailbox${sep}test2${sep}
ok create $mailbox${sep}test2${sep}test1
ok create $mailbox${sep}test3
ok create $mailbox${sep}test4${sep}test5
ok create $mailbox${sep}test4${sep}test52
ok create $mailbox${sep}test6
ok create $mailbox${sep}test7${sep}test7
ok create $mailbox${sep}test8${sep}test8
ok create $mailbox${sep}test8${sep}test9
ok subscribe $mailbox${sep}test1
ok subscribe $mailbox${sep}test2${sep}test1
ok subscribe $mailbox${sep}test6
ok subscribe $mailbox${sep}test7${sep}test7
ok subscribe $mailbox${sep}test8${sep}test8
ok subscribe $mailbox${sep}test8${sep}test9
ok delete $mailbox${sep}test6
# "" isn't a special case with LIST-EXTENDED
#ok list () "" ""
#! list () $sep ""
#ok list "" ("")
#! list () $sep ""
#ok list "" "" return ()
#! list () $sep ""
# test multiple patterns
ok list "" ($mailbox${sep}*2 $mailbox${sep}test3)
! list () $sep $mailbox${sep}test1
* list () $sep $mailbox${sep}test2
! list () $sep $mailbox${sep}test2${sep}test1
* list () $sep $mailbox${sep}test3
! list () $sep $mailbox${sep}test4
! list () $sep $mailbox${sep}test4${sep}test5
* list () $sep $mailbox${sep}test4${sep}test52
! list () $sep $mailbox${sep}test6
# test errors
bad list (imaptest) "" ""
bad list (recursivematch) "" ""
bad list (recursivematch remote) "" ""
bad list "" "" return (imaptest)
ok list (remote) "" %
ok list (subscribed) "" $mailbox${sep}*
* list (\subscribed) $sep $mailbox${sep}test1
* list (\subscribed) $sep $mailbox${sep}test2${sep}test1
#* list ($!unordered $!ban=\noselect \subscribed \nonexistent) $sep $mailbox${sep}test6
* list (\subscribed) $sep $mailbox${sep}test7${sep}test7
* list (\subscribed) $sep $mailbox${sep}test8${sep}test9
ok list (subscribed recursivematch) "" $mailbox${sep}test2% return (children)
* list (\haschildren) $sep $mailbox${sep}test2 (childinfo (subscribed))
! list (\subscribed) $sep $mailbox${sep}test2
! list (\subscribed) $sep $mailbox${sep}test2${sep}test1
# don't test for \hasnochildren, because it may be \noinferiors instead
ok list "" $mailbox${sep}% return (children subscribed)
* list ($!unordered $!ban=\haschildren \subscribed) $sep $mailbox${sep}test1
* list ($!unordered $!ban=\subscribed \haschildren) $sep $mailbox${sep}test2
* list ($!unordered $!ban=\subscribed $!ban=\haschildren) $sep $mailbox${sep}test3
* list ($!unordered $!ban=\subscribed \haschildren) $sep $mailbox${sep}test4
* list ($!unordered $!ban=\subscribed \haschildren) $sep $mailbox${sep}test7
* list ($!unordered $!ban=\subscribed \haschildren) $sep $mailbox${sep}test8
ok list (subscribed recursivematch) "" $mailbox*test7
! list () $sep $mailbox${sep}test7
* list (\subscribed) $sep $mailbox${sep}test7${sep}test7
ok list (subscribed recursivematch) "" $mailbox*test8
* list ($!unordered $!ban=\subscribed) $sep $mailbox${sep}test8 (childinfo ("subscribed"))
* list (\subscribed) $sep $mailbox${sep}test8${sep}test8
ok list (subscribed recursivematch) "" ($mailbox${sep}test2)
* list () $sep $mailbox${sep}test2 (childinfo ("subscribed"))
! list () $sep $mailbox${sep}test2${sep}test1
ok list (subscribed recursivematch) "" ($mailbox${sep}test2 $mailbox${sep}test2${sep}test1)
* list () $sep $mailbox${sep}test2 (childinfo ("subscribed"))
* list (\subscribed) $sep $mailbox${sep}test2${sep}test1
ok list "" ($mailbox${sep}test7 $mailbox${sep}test7${sep}test7)
#This isn't really an error, although it's non-optimal: ! list (\nonexistent) $sep $mailbox${sep}test7
* list () $sep $mailbox${sep}test7${sep}test7
+14
View File
@@ -0,0 +1,14 @@
state: nonauth
connections: 2
1 ok noop
! bye
2 ok noop
! bye
1 ok logout
* bye
2 ok noop
2 ok logout
* bye
+47
View File
@@ -0,0 +1,47 @@
capabilities: MOVE
state: created
# - assumes COPYUID is sent untagged before expunges.
# - assumes MOVE to mailbox itself changes message UID
ok append
ok append
ok append
ok create ${mailbox}2
ok select ${mailbox}2
* 0 exists
* ok [uidvalidity $uidvalidity_dest]
* ok [uidnext $uidnext_dest1]
# MOVE:
ok select $mailbox
ok fetch 1:* uid
* 1 fetch (uid $uid1)
* 2 fetch (uid $uid2)
* 3 fetch (uid $uid3)
ok move 1 ${mailbox}2
* ok [copyuid $uidvalidity_dest $uid1 $uidnext_dest1]
* 1 expunge
# UID MOVE:
ok select ${mailbox}2
* 1 exists
* ok [uidvalidity $uidvalidity_dest]
* ok [uidnext $uidnext_dest2]
ok select $mailbox
* ok [uidvalidity $uidvalidity]
* ok [uidnext $uidnext1]
ok uid move $uid2 ${mailbox}2
* ok [copyuid $uidvalidity_dest $uid2 $uidnext_dest2]
* 1 expunge
# MOVE to same mailbox:
#ok move 1 $mailbox
#* ok [copyuid $uidvalidity $uid3 $uidnext1]
#* 1 expunge
#* 1 exists
+30
View File
@@ -0,0 +1,30 @@
capabilities: MULTIAPPEND
state: created
ok append $mailbox {{{
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: mail1
body1
}}} {{{
From: [email protected]
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: mail2
body2
}}}
ok select $mailbox
ok fetch 1:* body.peek[header.fields (subject)]
* 1 fetch (body[header.fields (subject)] {{{
Subject: mail1
}}})
* 2 fetch (body[header.fields (subject)] {{{
Subject: mail2
}}})
+12
View File
@@ -0,0 +1,12 @@
state: auth
# get the separator
ok list "" ""
* list () $sep $root
ok create "$mailbox${sep}p&AOQA5A-"
ok list "" "$mailbox${sep}p&AOQA5A-"
* list () $sep "$mailbox${sep}p&AOQA5A-"
ok status "$mailbox${sep}p&AOQA5A-" (messages)
* status "$mailbox${sep}p&AOQA5A-" (messages 0)
+13
View File
@@ -0,0 +1,13 @@
messages: 1
ok search subject NIL
* search 1
ok search body nil
* search 1
ok list "" NIL
ok store 1 +flags NIL
ok fetch 1 flags
* 1 fetch (flags (NIL))
+5
View File
@@ -0,0 +1,5 @@
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: NiL
nil
+20
View File
@@ -0,0 +1,20 @@
capabilities: notify qresync
ok create ${mailbox}2
ok append ${mailbox}2
#
# Check that initial STATUS notifications are sent when needed
#
ok notify set status (mailboxes ${mailbox}2 (MessageExpunge))
* status ${mailbox}2 (messages 1)
ok notify set status (mailboxes ${mailbox}2 (MessageNew))
* status ${mailbox}2 (messages 1 uidnext $uidnext uidvalidity $uidvalidity)
ok notify set status (mailboxes ${mailbox}2 (FlagChange))
* status ${mailbox}2 (uidvalidity $uidvalidity highestmodseq $hmodseq)
ok notify set (mailboxes ${mailbox}2 (MessageNew MessageExpunge FlagChange))
! status ${mailbox}2 ()
+23
View File
@@ -0,0 +1,23 @@
state: auth
tag1 create ${mailbox}
tag2 create ${mailbox}2
tag3 create ${mailbox}3
tag4 create ${mailbox}4
tag1 ok
tag2 ok
tag3 ok
tag4 ok
tag1 status ${mailbox} (messages)
tag2 status ${mailbox}2 (messages)
tag3 status ${mailbox}3 (messages)
tag4 status ${mailbox}4 (messages)
* status ${mailbox} (messages 0)
* status ${mailbox}2 (messages 0)
* status ${mailbox}3 (messages 0)
* status ${mailbox}4 (messages 0)
tag1 ok
tag2 ok
tag3 ok
tag4 ok
@@ -0,0 +1,71 @@
messages: all
# full address searching
ok search from [email protected]
* search 1 2 3 4 6 7
ok search to [email protected]
* search 1 2 3 4
ok search cc [email protected]
* search 1 2 3 4 5
ok search bcc [email protected]
* search 1 2 3 4
# realname searching
ok search from realfrom
* search 2 4 6 7
ok search to realto
* search 2 4
ok search cc realcc
* search 2 4
ok search bcc realbcc
* search 2 4
# existence searches
ok search header from ""
* search 1 2 3 4 5 6 7
ok search header to ""
* search 1 2 3 4 6 7
ok search header cc ""
* search 1 2 3 4 5
ok search header bcc ""
* search 1 2 3 4
# substring address searches
#ok search from ser-fro
#* search 1 2 3 4 5 6 7
#ok search to ser-t
#* search 1 2 3 4
#ok search cc ser-c
#* search 1 2 3 4 5
#ok search bcc ser-bc
#* search 1 2 3 4
# substring realname searches
#ok search from ealfro
#* search 2 4 6 7
#ok search to ealt
#* search 2 4
#ok search cc ealc
#* search 2 4
#ok search bcc ealbc
#* search 2 4
# multiple addresses
ok search from user-from1
* search 5
ok search from user-from2
* search 5
# groups
ok search to groupname
* search 6 7
ok search to groupname2
* search 6
ok search to groupuser1
* search 6
ok search to groupuser2
* search 6
ok search to groupuser3
* search 6
ok search to groupuser4
* search
@@ -0,0 +1,50 @@
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected]
To: [email protected]
Cc: [email protected]
Bcc: [email protected]
body
From user@domain Fri Feb 22 17:06:23 2008
From: RealFrom <[email protected]>
To: RealTo <[email protected]>
Cc: RealCc <[email protected]>
Bcc: RealBcc <[email protected]>
body2
From user@domain Fri Feb 22 17:06:23 2008
From: <user-from (comment)@ (comment) domain.org>
To: <[email protected]>
Cc: <[email protected]>
Bcc: <[email protected]>
body3
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected] (RealFrom)
To: [email protected] (RealTo)
Cc: [email protected] (RealCc)
Bcc: [email protected] (RealBcc)
body4
From user@domain Fri Feb 22 17:06:23 2008
From: [email protected], [email protected]
Cc: [email protected]
body5
From user@domain Fri Feb 22 17:06:23 2008
From: RealFrom <[email protected]>
To: groupname: [email protected], [email protected];,
groupname2: [email protected];
body6
From user@domain Fri Feb 22 17:06:23 2008
From: RealFrom <[email protected]>
To: groupname:;
body7
+31
View File
@@ -0,0 +1,31 @@
messages: all
# search full words first
ok search text asdfghjkl
* search 1 2
ok search text zxcvbnm
* search 1 3 4
ok search text qwertyuiop
* search 2 4
ok search body asdfghjkl
* search 1 2
ok search body zxcvbnm
* search 1 3 4
ok search body qwertyuiop
* search 4
# search substrings
#ok search text sdfghjk
#* search 1 2
#ok search text xcvbn
#* search 1 3 4
#ok search text wertyuio
#* search 2 3 4
#ok search body sdfghjk
#* search 1 2
#ok search body xcvbn
#* search 1 3 4
#ok search body wertyuio
#* search 4
@@ -0,0 +1,21 @@
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
asdfghjkl zxcvbnm
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
Subject: qwertyuiop
asdfghjkl
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
X-Header: qwertyuiop
zxcvbnm
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
zxcvbnm qwertyuiop
@@ -0,0 +1,35 @@
capabilities: CONTEXT=SEARCH
state: created
ok append
ok append
ok append
ok append
ok append
ok select $mailbox
ok search return (update) body body seen
* esearch (tag $searchtag)
ok store 1,2,4 +flags \seen
* esearch (tag $searchtag) addto ($pos 1:2,4)
ok store 1,2 -flags \seen
* esearch (tag $searchtag) removefrom ($pos2 1:2)
ok store 3:5 +flags \deleted
ok expunge
* esearch (tag $searchtag) removefrom ($pos3 $4)
* $3 expunge
* $4 expunge
* $5 expunge
ok append $mailbox (\seen)
* 3 exists
* esearch (tag $searchtag) addto ($pos4 3)
ok cancelupdate "$searchtag"
ok store 1 +flags \seen
! esearch (tag $searchtag) addto ($pos5 1)
@@ -0,0 +1,21 @@
capabilities: CONTEXT=SEARCH
messages: 5
ok store 1,2 +flags \seen
ok search return (update all) or seen subject s22
* esearch (tag $searchtag) all 1:2
ok store 3:5 +flags \seen
* esearch (tag $searchtag) addto ($pos 3:5)
ok store 1:5 -flags \seen
* esearch (tag $searchtag) removefrom ($pos2 1,3:5)
ok store 3,4 +flags \seen
* esearch (tag $searchtag) addto ($pos3 3:4)
ok store 3 +flags \deleted
ok expunge
* 3 expunge
* esearch (tag $searchtag) removefrom ($pos4 3)
@@ -0,0 +1,31 @@
capabilities: CONTEXT=SEARCH
messages: 6
ok store 1 +flags \deleted
ok expunge
ok fetch 1:5 uid
* 1 fetch (uid $uid1)
* 2 fetch (uid $uid2)
* 3 fetch (uid $uid3)
* 4 fetch (uid $uid4)
* 5 fetch (uid $uid5)
ok store 1,2 +flags \seen
ok uid search return (update all) or seen subject s33
* esearch (tag $searchtag) uid all $uid1:$uid2
ok store 3:5 +flags \seen
* esearch (tag $searchtag) uid addto ($pos $uid3:$uid5)
ok store 1:5 -flags \seen
* esearch (tag $searchtag) uid removefrom ($pos2 $uid1,$uid3:$uid5)
ok uid store $uid3,$uid4 +flags \seen
* esearch (tag $searchtag) uid addto ($pos3 $uid3:$uid4)
ok store 3 +flags \deleted
ok expunge
* 3 expunge
* esearch (tag $searchtag) uid removefrom ($pos4 $uid3)
+71
View File
@@ -0,0 +1,71 @@
messages: all
# 1) Timezone changes from EET +0200 -> EEST +0300
# 1a) SENTBEFORE
ok search sentbefore 24-mar-2007
* search
ok search sentbefore 25-mar-2007
* search 1
ok search sentbefore 27-mar-2007
* search 1 2 3 4 5 6 7
# 1b) SENTON
ok search senton 23-mar-2007
* search
ok search senton 24-mar-2007
* search 1
ok search senton 25-mar-2007
* search 2 3 4 5 6
ok search senton 26-mar-2007
* search 7
# 1c) SENTSINCE
ok search 1:7 sentsince 24-mar-2007
* search 1 2 3 4 5 6 7
ok search 1:7 sentsince 25-mar-2007
* search 2 3 4 5 6 7
ok search 1:7 sentsince 26-mar-2007
* search 7
ok search 1:7 sentsince 27-mar-2007
* search
# 2) Timezone changes from EEST +0300 -> EET +0200
# 2a) SENTBEFORE
ok search 8:* sentbefore 27-oct-2007
* search
ok search 8:* sentbefore 28-oct-2007
* search 8
ok search 8:* sentbefore 29-oct-2007
* search 8 9 10 11 12 13 14 15
ok search 8:* sentbefore 30-oct-2007
* search 8 9 10 11 12 13 14 15 16
# 2b) SENTON
ok search 8:* senton 26-oct-2007
* search
ok search 8:* senton 27-oct-2007
* search 8
ok search 8:* senton 28-oct-2007
* search 9 10 11 12 13 14 15
ok search 8:* senton 29-oct-2007
* search 16
# 2c) SENTSINCE
ok search 8:* sentsince 27-oct-2007
* search 8 9 10 11 12 13 14 15 16
ok search 8:* sentsince 28-oct-2007
* search 9 10 11 12 13 14 15 16
ok search 8:* sentsince 29-oct-2007
* search 16
ok search 8:* sentsince 30-oct-2007
* search
# 3) Try a couple of NOTs
ok search 1:7 not sentbefore 26-mar-2007
* search 7
ok search 1:7 not senton 25-mar-2007
* search 1 7
ok search 8:* not sentsince 28-oct-2007
* search 8
ok search 8:* not senton 28-oct-2007
* search 8 16
@@ -0,0 +1,80 @@
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sat, 24 Mar 2007 23:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 25 Mar 2007 00:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 25 Mar 2007 01:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 25 Mar 2007 02:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 25 Mar 2007 04:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 25 Mar 2007 23:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Mon, 26 Mar 2007 00:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sat, 27 Oct 2007 03:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 28 Oct 2007 00:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 28 Oct 2007 01:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 28 Oct 2007 02:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 28 Oct 2007 03:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 28 Oct 2007 03:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 28 Oct 2007 04:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Sun, 28 Oct 2007 23:00:00 +0000
body
From user@domain Sat Mar 24 23:00:00 2007 +0000
Date: Mon, 29 Oct 2007 00:00:00 +0000
body
+95
View File
@@ -0,0 +1,95 @@
messages: 5
ok store 1 flags ($$hello)
ok store 2 flags (\seen \flagged)
ok store 3 flags (\answered $$hello)
ok store 4 flags (\flagged \draft)
ok store 5 flags (\deleted \answered)
ok search answered
* search 3 5
ok search unanswered
* search 1 2 4
ok search deleted
* search 5
ok search undeleted
* search 1 2 3 4
ok search draft
* search 4
ok search undraft
* search 1 2 3 5
ok search flagged
* search 2 4
ok search unflagged
* search 1 3 5
ok search seen
* search 2
ok search unseen
* search 1 3 4 5
ok search keyword $$hello
* search 1 3
ok search unkeyword $$hello
* search 2 4 5
#ok search new
#* search 1 3 4 5
#ok search old
#* search
#ok search recent
#* search 1 2 3 4 5
ok store 1:* flags (\seen)
ok store 2 +flags (\flagged)
ok search seen flagged
* search 2
ok search seen not flagged
* search 1 3 4 5
ok search not seen flagged
* search
ok search not seen not flagged
* search
ok store 1:* flags (\deleted)
ok store 2 +flags (\flagged)
ok search deleted flagged
* search 2
ok search deleted not flagged
* search 1 3 4 5
ok search not deleted flagged
* search
ok search not deleted not flagged
* search
ok store 1:* flags (\seen \deleted)
ok store 2 +flags (\flagged)
ok search seen flagged
* search 2
ok search seen not flagged
* search 1 3 4 5
ok search not seen flagged
* search
ok search not seen not flagged
* search
ok search seen deleted flagged
* search 2
ok search seen deleted not flagged
* search 1 3 4 5
ok search not seen deleted flagged
* search
ok search not seen deleted not flagged
* search
ok search seen not deleted flagged
* search
ok search seen not deleted not flagged
* search
ok search not seen not deleted flagged
* search
ok search not seen not deleted not flagged
* search
+37
View File
@@ -0,0 +1,37 @@
messages: all
# just check that this returns ok. it's not really specified in RFC, so
# don't verify the result.
ok search subject ""
# subject
ok search subject hello
* search 1
ok search subject beautiful
* search 1
ok search subject world
* search 1
ok search subject "hello beautiful"
* search 1
ok search subject "hello beautiful world"
* search 1
#ok search subject "eautiful worl"
#* search 1
# header
ok search header subject ""
* search 1
ok search not header subject ""
* search 2
#ok search header x-extra ""
#* search 2
#ok search not header x-extra ""
#* search 1
#ok search header x-extra hello
#* search 2
#ok search header x-extra "hello beautiful"
#* search 2
#ok search header x-extra "eautiful head"
#* search 2
#ok search header x-extra "another"
#* search 2
@@ -0,0 +1,10 @@
From user@domain Fri Feb 22 17:06:23 2008
Subject: hello beautiful world
body
From user@domain Fri Feb 22 17:06:23 2008
X-Extra: hello beautiful header
X-Extra: another one
body
+54
View File
@@ -0,0 +1,54 @@
capabilities: CONTEXT=SEARCH
messages: all
ok search return (partial 1:1) all
* esearch (tag $tag) partial (1:1 1)
ok search return (partial 2:4) all
* esearch (tag $tag) partial (2:4 2:4)
ok search return (partial 4:2) all
* esearch (tag $tag) partial (2:4 2:4)
ok search return (partial 1:6) all
* esearch (tag $tag) partial (1:6 1:5)
ok search return (partial 6:6) all
* esearch (tag $tag) partial (6:6 nil)
ok search return (partial 1:3) 1:2,4:5
* esearch (tag $tag) partial (1:3 1:2,4)
ok search return (partial 2:3) 1:2,4:5
* esearch (tag $tag) partial (2:3 2,4)
ok search return (partial 2:4) 1:2,4:5
* esearch (tag $tag) partial (2:4 2,4:5)
ok search return (partial 2:10) 1:2,4:5
* esearch (tag $tag) partial (2:10 2,4:5)
# UID partials
ok fetch 1 uid
* 1 fetch (uid $uid1)
ok fetch 2 uid
* 2 fetch (uid $uid2)
ok fetch 3 uid
* 3 fetch (uid $uid3)
ok fetch 5 uid
* 5 fetch (uid $uid5)
ok uid search return (partial 1:1) all
* esearch (tag $tag) uid partial (1:1 $uid1)
ok uid search return (partial 2:2) all
* esearch (tag $tag) uid partial (2:2 $uid2)
ok store 2 +flags \deleted
ok expunge
ok uid search return (partial 2:2) all
* esearch (tag $tag) uid partial (2:2 $uid3)
ok uid search return (partial 5:10) all
* esearch (tag $tag) uid partial (5:10 nil)
# broken results
bad search return (partial 1) all
bad search return (partial 1:*) all
bad search return (partial *:1) all
@@ -0,0 +1,19 @@
From user@domain Fri Feb 22 17:06:21 2008
1
From user@domain Fri Feb 22 17:06:22 2008
2
From user@domain Fri Feb 22 17:06:23 2008
3
From user@domain Fri Feb 22 17:06:23 2008
4
From user@domain Fri Feb 22 17:06:25 2008
5
+62
View File
@@ -0,0 +1,62 @@
messages: 6
ok uid search all
* search $uid1 $uid2 $uid3 $uid4 $uid5 $uid6
ok status $mailbox (uidnext)
* status $mailbox (uidnext $uidnext)
# break seq=uid mapping
ok store 2 +flags \deleted
ok expunge
* 2 expunge
ok search all
* search 1 2 3 4 5
ok uid search all
* search $uid1 $uid3 $uid4 $uid5 $uid6
ok search 1:3,5
* search 1 2 3 5
ok search 4:2
* search 2 3 4
ok search uid $uid1:$uid3,$uid5
* search 1 2 4
ok search uid $uid4:$uid2
* search 2 3
ok search 1:3 not uid $uid3
* search 1 3
ok search not 2,4
* search 1 3 5
ok search or 1 uid $uid3
* search 1 2
ok search *
* search 5
ok search uid *
* search 5
ok search uid $uidnext:*
* search 5
ok search *:3
* search 3 4 5
ok search 1,4,*
* search 1 4 5
# These are in a bit of a grey area. Most servers allow them, but it's not
# explicitly defined in the RFC that they're legal:
#ok search 6:*
#* search 5
#ok search *:6
#* search 5
ok search (3) uid $uid4
* search 3
ok search (uid $uid4) 3
* search 3
ok search 3 (uid $uid4)
* search 3
ok uid search uid 1:4294967295
* search $uid1 $uid3 $uid4 $uid5 $uid6
ok uid search uid $uidnext:4294967295
* search
+22
View File
@@ -0,0 +1,22 @@
messages: all
# get the middle size. don't trust precalculated values in case server
# modifies the message while APPENDing it. Messages 3 and 4 have different
# RFC822.SIZE, but with servers that store linefeeds as LFs they have the
# same file size. This test catches if they search using file size.
ok fetch 1:4 rfc822.size
* 3 fetch (rfc822.size $size)
ok search smaller $size
* search 1 2
ok search larger $size
* search 4
ok search not smaller $size
* search 3 4
ok search not larger $size
* search 1 2 3
ok search not smaller $size not larger $size
* search 3
ok search or smaller $size larger $size
* search 1 2 4
@@ -0,0 +1,21 @@
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
1
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
22
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
333
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
4
4
+33
View File
@@ -0,0 +1,33 @@
state: created
ok append
ok append
# first open read-only so recent flags don't get lost
examine $mailbox
* 2 exists
#* 2 recent
#* ok [unseen 1]
* ok [uidvalidity $uidvalidity]
* ok [uidnext $uidnext]
ok [read-only]
ok close
# check that STATUS replies with the same values
ok status $mailbox (messages uidnext uidvalidity unseen)
* status $mailbox (messages 2 uidnext $uidnext uidvalidity $uidvalidity unseen 2)
# then try read-write
select $mailbox
* 2 exists
#* 2 recent
#* ok [unseen 1]
* ok [uidvalidity $uidvalidity]
* ok [uidnext $uidnext]
ok [read-write]
ok close
#ok status $mailbox (recent)
#* status $mailbox (recent 0)
+10
View File
@@ -0,0 +1,10 @@
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
body
From user@domain Fri Feb 22 17:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
body2
+23
View File
@@ -0,0 +1,23 @@
capabilities: SORT
messages: all
ok sort (from) us-ascii all
* sort 3 2 1
ok sort (to) us-ascii all
* sort 3 2 1
ok sort (cc) us-ascii all
* sort 2 1 3
ok sort (reverse from) us-ascii all
* sort 1 2 3
ok sort (reverse to) us-ascii all
* sort 1 2 3
ok sort (reverse cc) us-ascii all
* sort 3 1 2
ok sort (from reverse arrival) us-ascii all
* sort 3 2 1
ok sort (to reverse arrival) us-ascii all
* sort 3 2 1
ok sort (cc reverse arrival) us-ascii all
* sort 2 1 3
@@ -0,0 +1,21 @@
From user@domain Fri Feb 22 00:06:23 2008
From: [email protected]
To: [email protected]
Cc: [email protected] (foo bar)
1
From user@domain Fri Feb 22 01:06:23 2008
From: [email protected]
To: [email protected]
Cc: [email protected]
2
From user@domain Fri Feb 22 02:06:23 2008
From: [email protected]
To: [email protected]
Cc: [email protected]
3
+11
View File
@@ -0,0 +1,11 @@
capabilities: SORT
messages: all
ok sort (arrival) us-ascii all
* sort 1 3 2 4 5
ok sort (reverse arrival) us-ascii all
* sort 5 4 2 3 1
ok sort (arrival reverse size) us-ascii all
* sort 1 3 5 4 2
@@ -0,0 +1,20 @@
From user@domain Fri Feb 22 00:00:00 2008
1
From user@domain Fri Feb 22 02:00:00 2008
2
From user@domain Fri Feb 22 01:00:00 2008
33
From user@domain Fri Feb 22 02:00:00 2008
44
From user@domain Fri Feb 22 02:00:00 2008
5555
+11
View File
@@ -0,0 +1,11 @@
capabilities: SORT
messages: all
ok sort (date) us-ascii all
* sort 1 3 7 5 2 4 6
ok sort (reverse date) us-ascii all
* sort 6 4 2 5 7 3 1
ok sort (date reverse size) us-ascii all
* sort 1 7 3 5 6 4 2
+37
View File
@@ -0,0 +1,37 @@
From user@domain Fri Feb 22 23:00:00 2008 +0200
Date: Fri, 22 Feb 2008 00:00:00 +0200
1
From user@domain Fri Feb 22 22:00:00 2008 +0200
Date: Fri, 22 Feb 2008 02:00:00 +0200
2
From user@domain Fri Feb 22 21:00:00 2008 +0200
Date: Fri, 22 Feb 2008 01:00:00 +0200
33
From user@domain Fri Feb 22 20:00:00 2008 +0200
Date: Fri, 22 Feb 2008 02:00:00 +0200
44
From user@domain Fri Feb 22 01:30:23 2008 +0200
Date: Fri, 22 Feb 2008 01:30:23 +0200
Subject: foo
55555
From user@domain Fri Feb 22 18:00:00 2008 +0200
Date: Fri, 22 Feb 2008 02:00:00 +0200
6666
From user@domain Fri Feb 22 01:00:00 2008 +0200
Date: Fri, 22 Feb 2008 01:00:00 +0200
Subject: foo bar foo bar foo bar fooo
777
@@ -0,0 +1,8 @@
capabilities: SORT=DISPLAY
messages: all
ok sort (displayfrom) us-ascii all
* sort 2 3 4 1 5
ok sort (reverse displayfrom) us-ascii all
* sort 5 1 4 3 2
@@ -0,0 +1,24 @@
From user@domain Fri Feb 22 23:00:00 2008 +0200
From: foo bar <[email protected]>
1
From user@domain Fri Feb 22 23:00:00 2008 +0200
From: [email protected]
2
From user@domain Fri Feb 22 23:00:00 2008 +0200
From: d
3
From user@domain Fri Feb 22 23:00:00 2008 +0200
From: =?iso-8859-1?q?foo_aar?= <[email protected]>
4
From user@domain Fri Feb 22 23:00:00 2008 +0200
From: =?iso-8859-1?q?foo_car?= <[email protected]>
5
@@ -0,0 +1,8 @@
capabilities: SORT=DISPLAY
messages: all
ok sort (displayto) us-ascii all
* sort 8 7 2 3 4 1 5 6
ok sort (reverse displayto) us-ascii all
* sort 6 5 1 4 3 2 7 8
@@ -0,0 +1,39 @@
From user@domain Fri Feb 22 23:00:00 2008 +0200
To: foo bar <[email protected]>
1
From user@domain Fri Feb 22 23:00:00 2008 +0200
To: [email protected]
2
From user@domain Fri Feb 22 23:00:00 2008 +0200
To: d
3
From user@domain Fri Feb 22 23:00:00 2008 +0200
To: =?iso-8859-1?q?foo_aar?= <[email protected]>
4
From user@domain Fri Feb 22 23:00:00 2008 +0200
To: =?iso-8859-1?q?foo_car?= <[email protected]>
5
From user@domain Fri Feb 22 23:00:00 2008 +0200
To: a: [email protected], [email protected];
6
From user@domain Fri Feb 22 23:00:00 2008 +0200
To: z: [email protected], [email protected];
7
From user@domain Fri Feb 22 23:00:00 2008 +0200
To: empty:;
8
+19
View File
@@ -0,0 +1,19 @@
capabilities: CONTEXT=SORT
messages: all
ok sort return (partial 1:1) (arrival) us-ascii all
* esearch (tag $tag) partial (1:1 1)
ok sort return (partial 2:4) (arrival) us-ascii all
* esearch (tag $tag) partial (2:4 2:4)
ok sort return (partial 4:2) (arrival) us-ascii all
* esearch (tag $tag) partial (2:4 2:4)
ok sort return (partial 2:4) (reverse arrival) us-ascii all
* esearch (tag $tag) partial (2:4 3:4,2)
ok sort return (partial 1:6) (arrival) us-ascii all
* esearch (tag $tag) partial (1:6 1:5)
ok sort return (partial 1:6) (reverse arrival) us-ascii all
* esearch (tag $tag) partial (1:6 5,3:4,2,1)
bad sort return (partial 1) (arrival) us-ascii all
bad sort return (partial 1:*) (arrival) us-ascii all
bad sort return (partial *:1) (arrival) us-ascii all
@@ -0,0 +1,19 @@
From user@domain Fri Feb 22 17:06:21 2008
1
From user@domain Fri Feb 22 17:06:22 2008
2
From user@domain Fri Feb 22 17:06:23 2008
3
From user@domain Fri Feb 22 17:06:23 2008
4
From user@domain Fri Feb 22 17:06:25 2008
5
+11
View File
@@ -0,0 +1,11 @@
capabilities: SORT
messages: all
ok sort (size) us-ascii all
* sort 1 8 2 6 3 5 4 7
ok sort (reverse size) us-ascii all
* sort 7 4 5 3 6 2 8 1
ok sort (size reverse arrival) us-ascii all
* sort 8 1 6 2 5 3 7 4
+41
View File
@@ -0,0 +1,41 @@
From user@domain Fri Feb 22 00:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
1
From user@domain Fri Feb 22 01:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
22
From user@domain Fri Feb 22 02:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
333
From user@domain Fri Feb 22 03:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
4
4
From user@domain Fri Feb 22 04:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
555
From user@domain Fri Feb 22 05:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
66
From user@domain Fri Feb 22 06:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
7777
From user@domain Fri Feb 22 07:06:23 2008
Date: Sat, 24 Mar 2007 23:00:00 +0200
8
+11
View File
@@ -0,0 +1,11 @@
capabilities: SORT
messages: all
ok sort (subject) us-ascii all
* sort 9 10 14 2 12 15 8 4 1 3 5 11 6 7 13
ok sort (reverse subject) us-ascii all
* sort 13 7 6 11 5 3 1 4 8 15 12 2 14 10 9
ok sort (subject reverse size) us-ascii all
* sort 10 9 14 12 2 15 8 4 1 11 5 3 6 13 7
@@ -0,0 +1,81 @@
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: a
1
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: C
2
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: b
3
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: _
4
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: [foo] Fwd: [bar] Re: fw: b (fWd) (fwd)
55
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: b (a)
66
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: Re: [FWD: c]
77
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: [xyz]
88
From user@domain Fri Feb 22 23:00:00 2008 +0200
9
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: =?iso-8859-1?q?_?=
10
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: Re: =?utf-8?q?b?=
11
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: =?iso-8859-1?q?RE:_C?=
12
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: =?us-ascii?b?UmU6IGM=?=
13
The subject is 'Re: c'.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: Ad: Re: Ad: Re: Ad: x
14
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: re: [fwd: [fwd: re: [fwd: babylon]]]
15
+33
View File
@@ -0,0 +1,33 @@
connections: 2
messages: 4
# simple tests
1 ok store 1:3 flags (\seen)
* 1 fetch (flags (\seen))
* 2 fetch (flags (\seen))
* 3 fetch (flags (\seen))
2 ok check
* 1 fetch (flags (\seen))
* 2 fetch (flags (\seen))
* 3 fetch (flags (\seen))
1 ok store 4 -flags \seen
1 ok store 3 flags (\draft)
* 3 fetch (flags (\draft))
# keywords
1 ok store 2,4 +flags ($$hello $$world)
* 2 fetch (flags (\seen $$hello $$world))
* 4 fetch (flags ($$hello $$world))
# check that two sessions don't overwrite each others' changes
1 ok store 1 +flags (\answered)
2 ok store 1 -flags (\seen)
1 ok check
2 ok check
1 ok fetch 1 flags
* 1 fetch (flags (\answered))
2 ok fetch 1 flags
* 1 fetch (flags (\answered))
+49
View File
@@ -0,0 +1,49 @@
connections: 2
state: auth
# get the separator
1 ok list "" ""
* list () $sep $root
1 "" unsubscribe $mailbox${sep}test
1 "" unsubscribe $mailbox${sep}test2
1 "" unsubscribe $mailbox${sep}test2${sep}test
1 "" unsubscribe $mailbox${sep}test3${sep}test3
1 ok create $mailbox${sep}
1 ok create $mailbox${sep}test
1 ok create $mailbox${sep}test2${sep}
1 ok create $mailbox${sep}test3${sep}
1 ok create $mailbox${sep}test2${sep}test
1 ok create $mailbox${sep}test3${sep}test3
# create the test2 mailbox only if server supports inferior mailboxes
1 "" create $mailbox${sep}test2
1 ok subscribe $mailbox${sep}test
1 ok subscribe $mailbox${sep}test2${sep}test
1 ok subscribe $mailbox${sep}test3${sep}test3
2 ok lsub "" $mailbox${sep}%
* lsub () $sep $mailbox${sep}test
#* lsub (\noselect) $sep $mailbox${sep}test2
#* lsub (\noselect) $sep $mailbox${sep}test3
! lsub (\noselect) $sep $mailbox${sep}test2${sep}test
! lsub (\noselect) $sep $mailbox${sep}test3${sep}test3
2 ok lsub "" *test
* lsub () $sep $mailbox${sep}test
* lsub () $sep $mailbox${sep}test2${sep}test
! lsub () $sep $mailbox${sep}test3${sep}test3
1 ok unsubscribe $mailbox${sep}test
2 ok lsub "" $mailbox${sep}%
! lsub () $sep $mailbox${sep}test
1 ok unsubscribe $mailbox${sep}test2${sep}test
2 ok lsub "" $mailbox${sep}*
! lsub () $sep $mailbox${sep}test
* lsub () $sep $mailbox${sep}test3${sep}test3
1 ok unsubscribe $mailbox${sep}test3${sep}test3
2 ok lsub "" $mailbox${sep}%
! lsub () $sep $mailbox${sep}test3
+11
View File
@@ -0,0 +1,11 @@
capabilities: THREAD=REFERENCES
messages: all
ok thread references us-ascii all
* thread (1 2 3)
ok store 1 +flags \deleted
ok expunge
ok thread references us-ascii all
* thread (1 2)
@@ -0,0 +1,5 @@
capabilities: THREAD=ORDEREDSUBJECT
messages: all
ok thread orderedsubject us-ascii all
* THREAD (1)(2 (7)(12)(13))(3 (5)(11))(4)(6)(8)(9 10)(14)(15)
@@ -0,0 +1,81 @@
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: a
1
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: C
2
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: b
3
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: _
4
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: [foo] Fwd: [bar] Re: fw: b (fWd) (fwd)
55
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: b (a)
66
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: Re: [FWD: c]
77
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: [xyz]
88
From user@domain Fri Feb 22 23:00:00 2008 +0200
9
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: =?iso-8859-1?q?_?=
10
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: Re: =?utf-8?q?b?=
11
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: =?iso-8859-1?q?RE:_C?=
12
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: =?us-ascii?b?UmU6IGM=?=
13
The subject is 'Re: c'.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: Ad: Re: Ad: Re: Ad: x
14
From user@domain Fri Feb 22 23:00:00 2008 +0200
Subject: re: [fwd: [fwd: re: [fwd: babylon]]]
15
@@ -0,0 +1,5 @@
capabilities: THREAD=ORDEREDSUBJECT
messages: all
ok thread orderedsubject us-ascii all
* THREAD (4 (2)(8)(6))(3 (1)(7)(5))
@@ -0,0 +1,44 @@
From user@domain Fri Feb 22 23:00:01 2008 +0200
Subject: a
Date: Fri, 22 Feb 2008 22:00:10 +0200
1
From user@domain Fri Feb 22 23:00:02 2008 +0200
Date: Fri, 22 Feb 2008 22:00:09 +0200
Subject: b
2
From user@domain Fri Feb 22 23:00:03 2008 +0200
Date: Fri, 22 Feb 2008 22:00:08 +0200
Subject: a
3
From user@domain Fri Feb 22 23:00:04 2008 +0200
Date: Fri, 22 Feb 2008 22:00:07 +0200
Subject: b
4
From user@domain Fri Feb 22 22:00:30 2008 +0200
Subject: a
5
From user@domain Fri Feb 22 22:00:29 2008 +0200
Subject: b
6
From user@domain Fri Feb 22 22:00:28 2008 +0200
Subject: a
7
From user@domain Fri Feb 22 22:00:27 2008 +0200
Subject: b
8
+16
View File
@@ -0,0 +1,16 @@
From user@domain Fri Feb 22 17:06:23 2008
Message-ID: <a@b>
body
From user@domain Fri Feb 22 15:06:23 2008
Message-Id: <b@b>
References: <a@b> <c@b>
body
From user@domain Fri Feb 22 16:06:25 2008
Message-Id: <c@b>
References: <b@b>
body
+5
View File
@@ -0,0 +1,5 @@
capabilities: THREAD=REFERENCES
messages: all
ok thread references us-ascii all
* thread (1)(2)
+9
View File
@@ -0,0 +1,9 @@
From user@domain Fri Feb 22 15:06:23 2008
Message-Id: <a@b>
body
From user@domain Fri Feb 22 15:06:23 2008
Message-Id: <a@c>
body
+5
View File
@@ -0,0 +1,5 @@
capabilities: THREAD=REFERENCES
messages: all
ok thread references us-ascii all
* THREAD (1 2)
+11
View File
@@ -0,0 +1,11 @@
From user@domain Fri Feb 22 15:06:23 2008
Message-Id: <a@b>
Subject: foo
body
From user@domain Fri Feb 22 15:06:24 2008
Message-Id: <a@b>
Subject: Re: foo
body
+5
View File
@@ -0,0 +1,5 @@
capabilities: THREAD=REFERENCES
messages: all
ok thread references us-ascii all
* THREAD (1 2)
+12
View File
@@ -0,0 +1,12 @@
From user@domain Fri Feb 22 15:06:23 2008
Message-Id: <a@b>
Subject: foo
body
From user@domain Fri Feb 22 15:06:24 2008
Message-Id: <b@b>
References: <a@b>
Subject: Re: foo
body
+20
View File
@@ -0,0 +1,20 @@
capabilities: THREAD=REFERENCES
state: created
ok append
ok append
ok append
ok append
ok select $mailbox
ok thread references us-ascii all
* THREAD (1 2 3 4)
ok store 1,2 +flags \deleted
ok expunge
ok thread references us-ascii all
* THREAD (1 2)
ok append
ok thread references us-ascii all
* THREAD (1 2 3)
+29
View File
@@ -0,0 +1,29 @@
From user@domain Fri Feb 22 17:06:23 2008
Message-ID: <1@b>
body
From user@domain Fri Feb 22 15:06:23 2008
Message-Id: <2@b>
In-Reply-To: <1@b>
body
From user@domain Fri Feb 22 15:06:23 2008
Message-Id: <3@b>
In-Reply-To: <1@b>
body
From user@domain Fri Feb 22 15:06:23 2008
Message-Id: <4@b>
In-Reply-To: <2@b>
body
From user@domain Fri Feb 22 15:06:23 2008
Message-Id: <5@b>
In-Reply-To: <2@b>
body
+5
View File
@@ -0,0 +1,5 @@
capabilities: THREAD=REFERENCES
messages: all
ok thread references us-ascii all
* THREAD (1 2)

Some files were not shown because too many files have changed in this diff Show More