summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
cfae078)
I'm not sure this matters, and it could be a waste of
CPU cycles if no real clients care. However, it does
make debugging over telnet or s_client a bit easier.
map {
my $no = $mailboxes->{$_} == $dummy ? '' : 'No';
qq[* LIST (\\Has${no}Children) "." $_\r\n]
map {
my $no = $mailboxes->{$_} == $dummy ? '' : 'No';
qq[* LIST (\\Has${no}Children) "." $_\r\n]
- } sort { length($a) <=> length($b) } keys %$mailboxes
+ } sort {
+ # shortest names first, alphabetically if lengths match
+ length($a) == length($b) ?
+ ($a cmp $b) :
+ (length($a) <=> length($b))
+ } keys %$mailboxes
];
$imapd->{pi_config} = $pi_config;
if (my $idler = $imapd->{idler}) {
];
$imapd->{pi_config} = $pi_config;
if (my $idler = $imapd->{idler}) {
\(MESSAGES\x20\d+\x20UIDNEXT\x20\d+\x20UIDVALIDITY\x20\d+\)\r\n/sx);
like($raw[1], qr/\A\S+ OK /, 'finished status response');
\(MESSAGES\x20\d+\x20UIDNEXT\x20\d+\x20UIDVALIDITY\x20\d+\)\r\n/sx);
like($raw[1], qr/\A\S+ OK /, 'finished status response');
+my @orig_list = @raw = $mic->list;
like($raw[0], qr/^\* LIST \(.*?\) "\." inbox/,
'got an inbox');
like($raw[-1], qr/^\S+ OK /, 'response ended with OK');
like($raw[0], qr/^\* LIST \(.*?\) "\." inbox/,
'got an inbox');
like($raw[-1], qr/^\S+ OK /, 'response ended with OK');
is($r2->{2}->{'BODY[HEADER.FIELDS (MESSAGE-ID)]'},
'Message-ID: <20200418222508.GA13918@dcvr>'."\r\n\r\n",
'BODY.PEEK[HEADER.FIELDS ...] drops .PEEK');
is($r2->{2}->{'BODY[HEADER.FIELDS (MESSAGE-ID)]'},
'Message-ID: <20200418222508.GA13918@dcvr>'."\r\n\r\n",
'BODY.PEEK[HEADER.FIELDS ...] drops .PEEK');
+
+{
+ my @new_list = $mic->list;
+ # tag differs in [-1]
+ like($orig_list[-1], qr/\A\S+ OK List done\r\n/, 'orig LIST');
+ like($new_list[-1], qr/\A\S+ OK List done\r\n/, 'new LIST');
+ pop @new_list;
+ pop @orig_list;
+ # TODO: not sure if sort order matters, imapd_refresh_finalize
+ # sorts, for now, but maybe clients don't care...
+ is_deeply(\@new_list, \@orig_list, 'LIST identical');
+}
ok($mic->close, 'CLOSE works');
ok(!$mic->close, 'CLOSE not idempotent');
ok($mic->logout, 'logged out');
ok($mic->close, 'CLOSE works');
ok(!$mic->close, 'CLOSE not idempotent');
ok($mic->logout, 'logged out');