'<testmessage@example.com>' => eml_load('t/utf8.eml'),
};
$exp->{'<qp@example.com>'}->header_set('Status', 'RO');
-$exp->{'<testmessage@example.com>'}->header_set('Status', 'O');
test_lei(sub {
lei_ok(qw(import -F eml t/plack-qp.eml));
lei_ok(qw(q -o), "maildir:$o", qw(m:qp@example.com));
@fn = glob("$o/cur/*:2,S");
-is(scalar(@fn), 1, "`seen' flag set on Maildir file");
+is(scalar(@fn), 1, "`seen' flag set on Maildir file") or
+ diag "$o contents: ", explain([glob("$o/*/*")]);
# ensure --no-import-before works
my $n = $fn[0];
my $cat = popen_rd(['cat', $o]);
ok(!lei(qw(q --import-before bogus -o), "mboxrd:$o"),
'--import-before fails on non-seekable output');
+ like($lei_err, qr/not seekable/, 'unseekable noted in error');
is(do { local $/; <$cat> }, '', 'no output on FIFO');
close $cat;
$cat = popen_rd(['cat', $o]);
my %res;
PublicInbox::MboxReader->mboxrd($fh, sub {
my ($eml) = @_;
- $res{$eml->header_raw('Message-ID')} = $eml;
+ my $mid = $eml->header_raw('Message-ID');
+ if ($mid eq '<testmessage@example.com>') {
+ is_deeply([$eml->header('Status')], [],
+ "no status $sfx");
+ $eml->header_set('Status');
+ } elsif ($mid eq '<qp@example.com>') {
+ is($eml->header('Status'), 'RO', 'status preserved');
+ } else {
+ fail("unknown mid $mid");
+ }
+ $res{$mid} = $eml;
});
- is_deeply(\%res, $exp, '--augment worked');
+ is_deeply(\%res, $exp, '--augment worked') or diag $lei_err;
lei_ok(qw(q -o), "mboxrd:/dev/stdout", qw(m:qp@example.com)) or
diag $lei_err;
PublicInbox::MboxReader->mboxrd($fh, sub { push @another, shift });
is($another[0]->header('Status'), 'RO', 'seen kw set');
+# forwarded
+{
+ local $ENV{DBG} = 1;
+ $o = "$ENV{HOME}/forwarded";
+ lei_ok(qw(q -o), $o, "m:$m");
+ my @p = glob("$o/cur/*");
+ scalar(@p) == 1 or xbail('multiple when 1 expected', \@p);
+ my $passed = $p[0];
+ $passed =~ s/,S\z/,PS/ or xbail "failed to replace $passed";
+ rename($p[0], $passed) or xbail "rename $!";
+ lei_ok(qw(q -o), $o, 'm:bogus', \'clobber maildir');
+ is_deeply([glob("$o/cur/*")], [], 'old results clobbered');
+ lei_ok(qw(q -o), $o, "m:$m");
+ @p = glob("$o/cur/*");
+ scalar(@p) == 1 or xbail('multiple when 1 expected', \@p);
+ like($p[0], qr/,PS/, 'passed (Forwarded) flag kept');
+ lei_ok(qw(q -o), "mboxrd:$o.mboxrd", "m:$m");
+ open $fh, '<', "$o.mboxrd" or xbail $!;
+ my @res;
+ PublicInbox::MboxReader->mboxrd($fh, sub { push @res, shift });
+ scalar(@res) == 1 or xbail('multiple when 1 expected', \@res);
+ is($res[0]->header('Status'), 'RO', 'seen kw set');
+ is($res[0]->header('X-Status'), undef, 'no X-Status');
+
+ lei_ok(qw(q -o), "mboxrd:$o.mboxrd", 'bogus-for-import-before');
+ lei_ok(qw(q -o), $o, "m:$m");
+ @p = glob("$o/cur/*");
+ scalar(@p) == 1 or xbail('multiple when 1 expected', \@p);
+ like($p[0], qr/,PS/, 'passed (Forwarded) flag still kept');
+}
+
}); # test_lei
done_testing;