]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/lei-q-kw.t
lei: flesh out `forwarded' kw support for Maildir and IMAP
[public-inbox.git] / t / lei-q-kw.t
index 4db273636bd285be46681e955b17e015d905fb58..c00a0a43f8e8aa2eaa95986c3fa7e85966d692dc 100644 (file)
@@ -21,7 +21,7 @@ lei_ok(qw(import -F eml t/plack-qp.eml));
 my $o = "$ENV{HOME}/dst";
 lei_ok(qw(q -o), "maildir:$o", qw(m:qp@example.com));
 my @fn = glob("$o/cur/*:2,");
-scalar(@fn) == 1 or BAIL_OUT "wrote multiple or zero files: ".explain(\@fn);
+scalar(@fn) == 1 or xbail $lei_err, 'wrote multiple or zero files:', \@fn;
 rename($fn[0], "$fn[0]S") or BAIL_OUT "rename $!";
 
 lei_ok(qw(q -o), "maildir:$o", qw(m:bogus-noresults@example.com));
@@ -124,7 +124,7 @@ lei_ok(qw(q -o), $o, "m:$m", @inc);
 
 # emulate MUA marking a Maildir message as read:
 @fn = glob("$o/cur/*");
-scalar(@fn) == 1 or BAIL_OUT "wrote multiple or zero files: ".explain(\@fn);
+scalar(@fn) == 1 or xbail $lei_err, 'wrote multiple or zero files:', \@fn;
 rename($fn[0], "$fn[0]S") or BAIL_OUT "rename $!";
 
 lei_ok(qw(q -o), $o, 'bogus', \'clobber output dir to import keywords');
@@ -178,7 +178,7 @@ $m = 'multipart@example.com';
 $o = "$ENV{HOME}/fuzz";
 lei_ok('q', '-o', $o, "m:$m", @inc);
 @fn = glob("$o/cur/*");
-scalar(@fn) == 1 or BAIL_OUT "wrote multiple or zero files: ".explain(\@fn);
+scalar(@fn) == 1 or xbail $lei_err, "wrote multiple or zero files", \@fn;
 rename($fn[0], "$fn[0]S") or BAIL_OUT "rename $!";
 lei_ok('q', '-o', $o, "m:$m");
 is_deeply([glob("$o/cur/*")], [], 'clobbered output results');
@@ -205,5 +205,36 @@ open $fh, '<', \$lei_out or BAIL_OUT $!;
 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;