qr/done_testing;(?:\r\n){1,2}\z/,
'BODY[2.1.2] tail matched');
- $ret = $mic->fetch_hash($uidnext, 'BODY[2.HEADER]') or
+ $ret = $mic->fetch_hash("1:$uidnext", 'BODY[2.HEADER]') or
BAIL_OUT "2.HEADER $@";
like($ret->{$uidnext}->{'BODY[2.HEADER]'},
qr/\ADate: Sat, 18 Apr 2020 22:20:20 /,
EOF
}); # each_inbox
+# message sequence numbers :<
+is($mic->Uid(0), 0, 'disable UID on '.ref($mic));
+ok($mic->reconnect, 'reconnected');
+$ret = $mic->fetch_hash('1:*', 'RFC822') or BAIL_OUT "FETCH $@";
+is(scalar keys %$ret, 3, 'got all 3 messages');
+{
+ my $rdr = { 0 => \($ret->{1}->{RFC822}) };
+ my $env = { HOME => $ENV{HOME} };
+ my @cmd = qw(-learn rm --all);
+ run_script(\@cmd, $env, $rdr) or BAIL_OUT('-learn rm');
+}
+my $r2 = $mic->fetch_hash('1:*', 'BODY.PEEK[]') or BAIL_OUT "FETCH $@";
+is(scalar keys %$r2, 3, 'still got all 3 messages');
+like($r2->{1}->{'BODY[]'}, qr/dummy message #1/, 'got dummy message 1');
+is($r2->{2}->{'BODY[]'}, $ret->{2}->{RFC822}, 'message 2 unchanged');
+is($r2->{3}->{'BODY[]'}, $ret->{3}->{RFC822}, 'message 3 unchanged');
+$r2 = $mic->fetch_hash(2, 'BODY.PEEK[HEADER.FIELDS (message-id)]')
+ or BAIL_OUT "FETCH $@";
+is($r2->{2}->{'BODY[HEADER.FIELDS (MESSAGE-ID)]'},
+ 'Message-ID: <20200418222508.GA13918@dcvr>'."\r\n\r\n",
+ 'BODY.PEEK[HEADER.FIELDS ...] drops .PEEK');
+ok($mic->close, 'CLOSE works');
+ok(!$mic->close, 'CLOSE not idempotent');
+ok($mic->logout, 'logged out');
+
$td->kill;
$td->join;
is($?, 0, 'no error in exited process');