# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
use strict;
use v5.10.1;
-use List::Util qw(shuffle max);
+use List::Util qw(shuffle);
use PublicInbox::TestCommon;
use PublicInbox::Eml;
-use PublicInbox::InboxWritable;
require_mods(qw(DBD::SQLite Search::Xapian));
require PublicInbox::ExtSearchIdx;
require_git 2.6;
require_ok 'PublicInbox::LeiXSearch';
+require_ok 'PublicInbox::LeiALE';
+require_ok 'PublicInbox::LEI';
my ($home, $for_destroy) = tmpdir();
my @ibx;
for my $V (1..2) {
$mset = $lxs->recent(undef, { limit => 1 });
is($mset->size, 1, 'one result');
-my $max = max(map { $_->{docid} } @msgs);
-is($lxs->smsg_for(($mset->items)[0])->{docid}, $max,
- 'got highest docid');
my @ibxish = $lxs->locals;
is(scalar(@ibxish), scalar(@ibx) + 1, 'got locals back');
{
$lxs = PublicInbox::LeiXSearch->new;
- my $v2ibx = PublicInbox::InboxWritable->new({
- inboxdir => "$home/v2full",
- name => 'v2full',
- version => 2,
- indexlevel => 'full',
- -primary_address => 'v2full@example.com',
- }, {});
- my $im = $v2ibx->importer(0);
- $im->add(eml_load('t/plack-qp.eml'));
- $im->done;
- my $v1ibx = PublicInbox::InboxWritable->new({
- inboxdir => "$home/v1medium",
- name => 'v1medium',
- version => 1,
- indexlevel => 'medium',
- -primary_address => 'v1medium@example.com',
- }, {});
- $im = $v1ibx->importer(0);
- $im->add(eml_load('t/utf8.eml'));
- $im->done;
+ my $v2ibx = create_inbox 'v2full', version => 2, sub {
+ $_[0]->add(eml_load('t/plack-qp.eml'));
+ };
+ my $v1ibx = create_inbox 'v1medium', indexlevel => 'medium',
+ tmpdir => "$home/v1tmp", sub {
+ $_[0]->add(eml_load('t/utf8.eml'));
+ };
$lxs->prepare_external($v1ibx);
$lxs->prepare_external($v2ibx);
for my $loc ($lxs->locals) {
}
my $mset = $lxs->mset('m:testmessage@example.com');
is($mset->size, 1, 'got m: match on medium+full XSearch mix');
+ my $mitem = ($mset->items)[0];
+ my $smsg = $lxs->smsg_for($mitem) or BAIL_OUT 'smsg_for broken';
+
+ my $ale = PublicInbox::LeiALE::_new("$home/ale");
+ my $lei = bless {}, 'PublicInbox::LEI';
+ $ale->refresh_externals($lxs, $lei);
+ my $exp = [ $smsg->{blob}, 'blob', -s 't/utf8.eml' ];
+ is_deeply([ $ale->git->check($smsg->{blob}) ], $exp, 'ale->git->check');
+
+ $lxs = PublicInbox::LeiXSearch->new;
+ $lxs->prepare_external($v2ibx);
+ $ale->refresh_externals($lxs, $lei);
+ is_deeply([ $ale->git->check($smsg->{blob}) ], $exp,
+ 'ale->git->check remembered inactive external');
+
+ rename("$home/v1tmp", "$home/v1moved") or BAIL_OUT "rename: $!";
+ $ale->refresh_externals($lxs, $lei);
+ is($ale->git->check($smsg->{blob}), undef,
+ 'missing after directory gone');
}
done_testing;