]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/lei-convert.t
treewide: fix %SIG localization, harder
[public-inbox.git] / t / lei-convert.t
index 186cfb13d1ad4c258b7e54627fc08b3601c0218e..0ea860c8218939d8fe22d4887ca6730dc8f17f84 100644 (file)
@@ -6,8 +6,8 @@ use PublicInbox::MboxReader;
 use PublicInbox::MdirReader;
 use PublicInbox::NetReader;
 use PublicInbox::Eml;
-require_git 2.6;
-require_mods(qw(DBD::SQLite Search::Xapian Mail::IMAPClient Net::NNTP));
+use IO::Uncompress::Gunzip;
+require_mods(qw(lei -imapd -nntpd Mail::IMAPClient Net::NNTP));
 my ($tmpdir, $for_destroy) = tmpdir;
 my $sock = tcp_server;
 my $cmd = [ '-imapd', '-W0', "--stdout=$tmpdir/i1", "--stderr=$tmpdir/i2" ];
@@ -57,10 +57,11 @@ test_lei({ tmpdir => $tmpdir }, sub {
        lei_ok('convert', '-o', "$d/md", "mboxrd:$d/foo.mboxrd");
        ok(-d "$d/md", 'Maildir created');
        my @md;
-       PublicInbox::MdirReader::maildir_each_eml("$d/md", sub {
+       PublicInbox::MdirReader->new->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 {
@@ -86,18 +87,33 @@ test_lei({ tmpdir => $tmpdir }, sub {
        my $exp = do { local $/; <$fh> };
        is($out, $exp, 'stdin => stdout');
 
-       lei_ok qw(convert -F eml -o mboxcl2:/dev/stdout t/plack-qp.eml);
+       lei_ok qw(convert -F eml -o mboxcl2:/dev/fd/1 t/plack-qp.eml);
        open $fh, '<', \$lei_out or BAIL_OUT;
        @bar = ();
        PublicInbox::MboxReader->mboxcl2($fh, sub {
                my $eml = shift;
-               for my $h (qw(Status Content-Length Lines)) {
+               for my $h (qw(Content-Length Lines)) {
                        ok(defined($eml->header_raw($h)),
                                "$h defined for mboxcl2");
                        $eml->header_set($h);
                }
                push @bar, $eml;
        });
-       is_deeply(\@bar, [ eml_load('t/plack-qp.eml') ], 'eml => mboxcl2');
+       my $qp_eml = eml_load('t/plack-qp.eml');
+       $qp_eml->header_set('Status', 'O');
+       is_deeply(\@bar, [ $qp_eml ], 'eml => mboxcl2');
+
+       lei_ok qw(convert t/plack-qp.eml -o), "mboxrd:$d/qp.gz";
+       open $fh, '<', "$d/qp.gz" or xbail $!;
+       ok(-s $fh, 'not empty');
+       $fh = IO::Uncompress::Gunzip->new($fh, MultiStream => 1);
+       @bar = ();
+       PublicInbox::MboxReader->mboxrd($fh, sub { push @bar, shift });
+       is_deeply(\@bar, [ $qp_eml ], 'wrote gzipped mboxrd');
+       lei_ok qw(convert -o mboxrd:/dev/stdout), "mboxrd:$d/qp.gz";
+       open $fh, '<', \$lei_out or xbail;
+       @bar = ();
+       PublicInbox::MboxReader->mboxrd($fh, sub { push @bar, shift });
+       is_deeply(\@bar, [ $qp_eml ], 'readed gzipped mboxrd');
 });
 done_testing;