]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/v2reindex.t
SearchIdx: Allow the amount of indexing be configured
[public-inbox.git] / t / v2reindex.t
index 9bc271fc2d35312b4a1eae20fae24112afb92fb4..20903967bf255f7133c09d71821165417003f3e6 100644 (file)
@@ -14,13 +14,14 @@ foreach my $mod (qw(DBD::SQLite Search::Xapian)) {
 }
 use_ok 'PublicInbox::V2Writable';
 my $mainrepo = tempdir('pi-v2reindex-XXXXXX', TMPDIR => 1, CLEANUP => 1);
-my $ibx = {
+my $ibx_config = {
        mainrepo => $mainrepo,
        name => 'test-v2writable',
        version => 2,
        -primary_address => 'test@example.com',
+       indexlevel => 'full',
 };
-$ibx = PublicInbox::Inbox->new($ibx);
+my $ibx = PublicInbox::Inbox->new($ibx_config);
 my $mime = PublicInbox::MIME->create(
        header => [
                From => 'a@example.com',
@@ -48,6 +49,7 @@ if ('test remove later') {
 $im->done;
 my $minmax = [ $ibx->mm->minmax ];
 ok(defined $minmax->[0] && defined $minmax->[1], 'minmax defined');
+is_deeply($minmax, [ 1, 10 ], 'minmax as expected');
 
 eval { $im->index_sync({reindex => 1}) };
 is($@, '', 'no error from reindexing');
@@ -62,7 +64,7 @@ $im->done;
 ok(-d $xap, 'Xapian directories recreated');
 
 delete $ibx->{mm};
-is_deeply($minmax, [ $ibx->mm->minmax ], 'minmax unchanged');
+is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged');
 
 ok(unlink "$mainrepo/msgmap.sqlite3", 'remove msgmap');
 remove_tree($xap);
@@ -76,7 +78,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        $im->done;
        ok(-d $xap, 'Xapian directories recreated');
        delete $ibx->{mm};
-       is_deeply($minmax, [ $ibx->mm->minmax ], 'minmax unchanged');
+       is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged');
 }
 
 ok(unlink "$mainrepo/msgmap.sqlite3", 'remove msgmap');
@@ -91,7 +93,46 @@ ok(!-d $xap, 'Xapian directories removed again');
        $im->done;
        ok(-d $xap, 'Xapian directories recreated');
        delete $ibx->{mm};
-       is_deeply($minmax, [ $ibx->mm->minmax ], 'minmax unchanged');
+       is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged');
+}
+
+ok(unlink "$mainrepo/msgmap.sqlite3", 'remove msgmap');
+remove_tree($xap);
+ok(!-d $xap, 'Xapian directories removed again');
+
+$ibx_config->{index_level} = 'medium';
+$ibx = PublicInbox::Inbox->new($ibx_config);
+$im = PublicInbox::V2Writable->new($ibx);
+{
+       my @warn;
+       local $SIG{__WARN__} = sub { push @warn, @_ };
+       eval { $im->index_sync({reindex => 1}) };
+       is($@, '', 'no error from reindexing without msgmap');
+       is_deeply(\@warn, [], 'no warnings');
+       $im->done;
+       ok(-d $xap, 'Xapian directories recreated');
+       delete $ibx->{mm};
+       is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged');
+}
+
+
+ok(unlink "$mainrepo/msgmap.sqlite3", 'remove msgmap');
+remove_tree($xap);
+ok(!-d $xap, 'Xapian directories removed again');
+
+$ibx_config->{index_level} = 'basic';
+$ibx = PublicInbox::Inbox->new($ibx_config);
+$im = PublicInbox::V2Writable->new($ibx);
+{
+       my @warn;
+       local $SIG{__WARN__} = sub { push @warn, @_ };
+       eval { $im->index_sync({reindex => 1}) };
+       is($@, '', 'no error from reindexing without msgmap');
+       is_deeply(\@warn, [], 'no warnings');
+       $im->done;
+       ok(-d $xap, 'Xapian directories recreated');
+       delete $ibx->{mm};
+       is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged');
 }
 
 done_testing();