1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| | #!perl -w
# Copyright (C) all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# ensure we detect errors in lei/store
use v5.12;
use PublicInbox::TestCommon;
use autodie qw(pipe open close seek);
use Fcntl qw(SEEK_SET);
use File::Path qw(remove_tree);
my $start_home = $ENV{HOME}; # bug guard
my $utf8_oid = '9bf1002c49eb075df47247b74d69bcd555e23422';
test_lei(sub {
lei_ok qw(import -q t/plack-qp.eml); # start the store
ok(!lei(qw(blob --mail), $utf8_oid), 't/utf8.eml not imported, yet');
my $opt;
pipe($opt->{0}, my $in_w);
open $opt->{1}, '+>', undef;
open $opt->{2}, '+>', undef;
$opt->{-CLOFORK} = [ $in_w ];
my $cmd = [ qw(lei import -q -F mboxrd) ];
my $tp = start_script($cmd, undef, $opt);
close $opt->{0};
$in_w->autoflush(1);
print $in_w <<EOM or xbail "print: $!";
From k\@y Fri Oct 2 00:00:00 1993
From: <k\@example.com>
Date: Sat, 02 Oct 2010 00:00:00 +0000
Subject: hi
Message-ID: <0\@t>
will this save?
EOM
# import another message w/ delay while mboxrd import is still running
lei_ok qw(import -q --commit-delay=300 t/utf8.eml);
lei_ok qw(blob --mail), $utf8_oid,
\'blob immediately available despite --commit-delay';
lei_ok qw(q m:testmessage@example.com);
is($lei_out, "[null]\n", 'delayed commit is unindexed');
# make immediate ->sto_barrier_request fail from mboxrd import:
remove_tree("$ENV{HOME}/.local/share/lei/store");
# subsequent lei commands are undefined behavior,
# but we need to make sure the current lei command fails:
close $in_w; # should trigger ->done
$tp->join;
isnt($?, 0, 'lei import -F mboxrd error code set on failure');
is(-s $opt->{1}, 0, 'nothing in stdout');
isnt(-s $opt->{2}, 0, 'stderr not empty');
seek($opt->{2}, 0, SEEK_SET);
my @err = readline($opt->{2});
ok(grep(!/^#/, @err), 'noted error in stderr') or diag "@err";
});
done_testing;
|