X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Flei_to_mail.t;h=231cf543a8f954447e81d6283a0ba9a40095cbef;hb=da089825419835c37afbdf7b7c5f0448766bdb27;hp=089a422ea5ab6161324242aec164b027d1c17421;hpb=a7539312d51443c9a705e64b16ac4fdcd4b17a6e;p=public-inbox.git diff --git a/t/lei_to_mail.t b/t/lei_to_mail.t index 089a422e..231cf543 100644 --- a/t/lei_to_mail.t +++ b/t/lei_to_mail.t @@ -62,4 +62,51 @@ for my $mbox (qw(mboxrd mboxo mboxcl mboxcl2)) { } } +my ($tmpdir, $for_destroy) = tmpdir(); +local $ENV{TMPDIR} = $tmpdir; +open my $err, '>>', "$tmpdir/lei.err" or BAIL_OUT $!; +my $lei = { 2 => $err }; +my $buf = <<'EOM'; +From: x@example.com +Subject: x + +blah +EOM +my $fn = "$tmpdir/x.mbox"; +my $orig = do { + my $wcb = PublicInbox::LeiToMail->write_cb("mboxcl2:$fn", $lei); + is(ref $wcb, 'CODE', 'write_cb returned callback'); + ok(-f $fn && !-s _, 'empty file created'); + $wcb->(\(my $dup = $buf), 'deadbeef', [ qw(seen) ]); + undef $wcb; + open my $fh, '<', $fn or BAIL_OUT $!; + my $raw = do { local $/; <$fh> }; + like($raw, qr/^blah\n/sm, 'wrote content'); + unlink $fn or BAIL_OUT $!; + + local $lei->{opt} = { jobs => 2 }; + $wcb = PublicInbox::LeiToMail->write_cb("mboxcl2:$fn", $lei); + $wcb->(\($dup = $buf), 'deadbeef', [ qw(seen) ]); + undef $wcb; + open $fh, '<', $fn or BAIL_OUT $!; + is($raw, do { local $/; <$fh> }, 'jobs > 1'); + $raw; +}; +SKIP: { + use PublicInbox::Spawn qw(which); + my $gzip = which('gzip') or skip 'gzip not found', 1; + my $wcb = PublicInbox::LeiToMail->write_cb("mboxcl2:$fn.gz", $lei); + $wcb->(\(my $dup = $buf), 'deadbeef', [ qw(seen) ]); + undef $wcb; + my $uncompressed = xqx([$gzip, '-dc', "$fn.gz"]); + is($uncompressed, $orig, 'gzip works'); + + local $lei->{opt} = { jobs => 2 }; + unlink "$fn.gz" or die "unlink $!"; + $wcb = PublicInbox::LeiToMail->write_cb("mboxcl2:$fn.gz", $lei); + $wcb->(\(my $dupe = $buf), 'deadbeef', [ qw(seen) ]); + undef $wcb; + is(xqx([$gzip, '-dc', "$fn.gz"]), $orig); +} + done_testing;