]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/lei-import.t
lei_input: drop "From " line on single "eml" (message/rfc822)
[public-inbox.git] / t / lei-import.t
index 709d89fa3c589869c45fc650af15047498ab0597..eef1e4e2d621a78c65fc3449b04454f3cf15e1f5 100644 (file)
@@ -3,16 +3,41 @@
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict; use v5.10.1; use PublicInbox::TestCommon;
 test_lei(sub {
+ok(!lei(qw(import -F bogus), 't/plack-qp.eml'), 'fails with bogus format');
+like($lei_err, qr/\bbogus unrecognized/, 'gave error message');
 
-ok($lei->(qw(q s:boolean)), 'search miss before import');
+lei_ok(qw(q s:boolean), \'search miss before import');
 unlike($lei_out, qr/boolean/i, 'no results, yet');
 open my $fh, '<', 't/data/0001.patch' or BAIL_OUT $!;
-ok($lei->([qw(import -f eml -)], undef, { %$lei_opt, 0 => $fh }),
-       'import single file from stdin');
+lei_ok([qw(import -F eml -)], undef, { %$lei_opt, 0 => $fh },
+       \'import single file from stdin') or diag $lei_err;
 close $fh;
-ok($lei->(qw(q s:boolean)), 'search hit after import');
-ok($lei->(qw(import -f eml), 't/data/message_embed.eml'),
-       'import single file by path');
+lei_ok(qw(q s:boolean), \'search hit after import');
+lei_ok(qw(q s:boolean -f mboxrd), \'blob accessible after import');
+{
+       my $expect = [ eml_load('t/data/0001.patch') ];
+       require PublicInbox::MboxReader;
+       my @cmp;
+       open my $fh, '<', \$lei_out or BAIL_OUT "open :scalar: $!";
+       PublicInbox::MboxReader->mboxrd($fh, sub {
+               my ($eml) = @_;
+               $eml->header_set('Status');
+               push @cmp, $eml;
+       });
+       is_deeply(\@cmp, $expect, 'got expected message in mboxrd');
+}
+lei_ok(qw(import -F eml), 't/data/message_embed.eml',
+       \'import single file by path');
+
+lei_ok(qw(q m:testmessage@example.com));
+is($lei_out, "[null]\n", 'no results, yet');
+my $oid = '9bf1002c49eb075df47247b74d69bcd555e23422';
+my $eml = eml_load('t/utf8.eml');
+my $in = 'From x@y Fri Oct  2 00:00:00 1993'."\n".$eml->as_string;
+lei_ok([qw(import -F eml -)], undef, { %$lei_opt, 0 => \$in });
+lei_ok(qw(q m:testmessage@example.com));
+is(json_utf8->decode($lei_out)->[0]->{'blob'}, $oid,
+       'got expected OID w/o From');
 
 my $str = <<'';
 From: a@b
@@ -20,20 +45,21 @@ Message-ID: <x@y>
 Status: RO
 
 my $opt = { %$lei_opt, 0 => \$str };
-ok($lei->([qw(import -f eml -)], undef, $opt),
-       'import single file with keywords from stdin');
-$lei->(qw(q m:x@y));
+lei_ok([qw(import -F eml -)], undef, $opt,
+       \'import single file with keywords from stdin');
+lei_ok(qw(q m:x@y));
 my $res = json_utf8->decode($lei_out);
 is($res->[1], undef, 'only one result');
 is_deeply($res->[0]->{kw}, ['seen'], "message `seen' keyword set");
 
 $str =~ tr/x/v/; # v@y
-ok($lei->([qw(import --no-kw -f eml -)], undef, $opt),
-       'import single file with --no-kw from stdin');
-$lei->(qw(q m:v@y));
+lei_ok([qw(import --no-kw -F eml -)], undef, $opt,
+       \'import single file with --no-kw from stdin');
+lei(qw(q m:v@y));
 $res = json_utf8->decode($lei_out);
 is($res->[1], undef, 'only one result');
-is_deeply($res->[0]->{kw}, [], 'no keywords set');
+is($res->[0]->{kw}, undef, 'no keywords set');
 
+# see t/lei_to_mail.t for "import -F mbox*"
 });
 done_testing;