diff options
Diffstat (limited to 't')
-rw-r--r-- | t/eml.t | 2 | ||||
-rw-r--r-- | t/lei-convert.t | 3 | ||||
-rw-r--r-- | t/lei-q-kw.t | 48 | ||||
-rw-r--r-- | t/lei-q-thread.t | 7 |
4 files changed, 54 insertions, 6 deletions
@@ -26,6 +26,8 @@ sub mime_load ($) { is($str, "hi\n", '->new modified body like Email::Simple'); is($eml->body, "hi\n", '->body works'); is($eml->as_string, "a: b\n\nhi\n", '->as_string'); + my $empty = PublicInbox::Eml->new("\n\n"); + is($empty->as_string, "\n\n", 'empty message'); } for my $cls (@classes) { diff --git a/t/lei-convert.t b/t/lei-convert.t index 186cfb13..e147715d 100644 --- a/t/lei-convert.t +++ b/t/lei-convert.t @@ -60,7 +60,8 @@ test_lei({ tmpdir => $tmpdir }, sub { PublicInbox::MdirReader::maildir_each_eml("$d/md", sub { push @md, $_[2]; }); - is(scalar(@md), scalar(@mboxrd), 'got expected emails in Maildir'); + is(scalar(@md), scalar(@mboxrd), 'got expected emails in Maildir') or + diag $lei_err; @md = sort { ${$a->{bdy}} cmp ${$b->{bdy}} } @md; @mboxrd = sort { ${$a->{bdy}} cmp ${$b->{bdy}} } @mboxrd; my @rd_nostatus = map { diff --git a/t/lei-q-kw.t b/t/lei-q-kw.t index 917a2c53..e7e14221 100644 --- a/t/lei-q-kw.t +++ b/t/lei-q-kw.t @@ -112,7 +112,51 @@ for my $sfx ('', '.gz') { lei_ok(qw(q -o), "mboxrd:/dev/stdout", qw(m:qp@example.com)) or diag $lei_err; like($lei_out, qr/^Status: OR\n/sm, 'Status set by previous augment'); -} +} # /mbox + mbox.gz tests -}); +my ($ro_home, $cfg_path) = setup_public_inboxes; + +# import keywords-only for external messages: +$o = "$ENV{HOME}/kwdir"; +my $m = 'alpine.DEB.2.20.1608131214070.4924@example'; +my @inc = ('-I', "$ro_home/t1"); +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); +rename($fn[0], "$fn[0]S") or BAIL_OUT "rename $!"; + +lei_ok(qw(q -o), $o, 'bogus', \'clobber output dir to import keywords'); +@fn = glob("$o/cur/*"); +is_deeply(\@fn, [], 'output dir actually clobbered'); +lei_ok('q', "m:$m", @inc); +my $res = json_utf8->decode($lei_out); +is_deeply($res->[0]->{kw}, ['seen'], 'seen flag set for external message') + or diag explain($res); +lei_ok('q', "m:$m", '--no-external'); +is_deeply($res = json_utf8->decode($lei_out), [ undef ], + 'external message not imported') or diag explain($res); + +$o = "$ENV{HOME}/kwmboxrd"; +lei_ok(qw(q -o), "mboxrd:$o", "m:$m", @inc); + +# emulate MUA marking mboxrd message as unread +open my $fh, '<', $o or BAIL_OUT; +my $s = do { local $/; <$fh> }; +$s =~ s/^Status: OR\n/Status: O\nX-Status: A\n/sm or + fail "failed to clear R flag in $s"; +open $fh, '>', $o or BAIL_OUT; +print $fh $s or BAIL_OUT; +close $fh or BAIL_OUT; + +lei_ok(qw(q -o), "mboxrd:$o", 'm:bogus', @inc, + \'clobber mbox to import keywords'); +lei_ok(qw(q -o), "mboxrd:$o", "m:$m", @inc); +open $fh, '<', $o or BAIL_OUT; +$s = do { local $/; <$fh> }; +like($s, qr/^Status: O\n/ms, 'seen keyword gone in mbox'); +like($s, qr/^X-Status: A\n/ms, 'answered flag set'); + +}); # test_lei done_testing; diff --git a/t/lei-q-thread.t b/t/lei-q-thread.t index e24fb2cb..c999d12b 100644 --- a/t/lei-q-thread.t +++ b/t/lei-q-thread.t @@ -43,10 +43,11 @@ test_lei(sub { 'flagged set in direct hit'); lei_ok qw(q -tt m:testmessage@example.com --only), "$ro_home/t2"; $res = json_utf8->decode($lei_out); - is_deeply($res->[0]->{kw}, [ 'flagged' ], - 'flagged set on external with -tt'); + is_deeply($res->[0]->{kw}, [ qw(flagged seen) ], + 'flagged set on external with -tt') or diag explain($res); lei_ok qw(q -t m:testmessage@example.com --only), "$ro_home/t2"; $res = json_utf8->decode($lei_out); - ok(!exists($res->[0]->{kw}), 'flagged not set on external with 1 -t'); + is_deeply($res->[0]->{kw}, [ 'seen' ], + 'flagged not set on external with 1 -t') or diag explain($res); }); done_testing; |