]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/lei_xsearch.t
www: drop --subject from "git send-email" instructions
[public-inbox.git] / t / lei_xsearch.t
index f626c79099217810b9c52419e12775f73cab466f..d9ddb2977c17114ae8f7ce78fabb2e5fd38375e9 100644 (file)
@@ -3,13 +3,15 @@
 # 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;
 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) {
@@ -61,9 +63,6 @@ is(scalar(@msgs), $nr, 'smsgs retrieved for all');
 
 $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');
@@ -75,7 +74,8 @@ is($lxs->over, undef, '->over fails');
        my $v2ibx = create_inbox 'v2full', version => 2, sub {
                $_[0]->add(eml_load('t/plack-qp.eml'));
        };
-       my $v1ibx = create_inbox 'v1medium', indexlevel => 'medium', sub {
+       my $v1ibx = create_inbox 'v1medium', indexlevel => 'medium',
+                               tmpdir => "$home/v1tmp", sub {
                $_[0]->add(eml_load('t/utf8.eml'));
        };
        $lxs->prepare_external($v1ibx);
@@ -85,6 +85,25 @@ is($lxs->over, undef, '->over fails');
        }
        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;