]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
t/cindex: fix broken size checks
authorEric Wong <e@80x24.org>
Sun, 26 Oct 2025 20:59:00 +0000 (20:59 +0000)
committerEric Wong <e@80x24.org>
Mon, 27 Oct 2025 17:40:53 +0000 (17:40 +0000)
Xapian size checks aren't accurate unless the shards are compacted.
Unfortunately, I commented out the -compact calls while working on
--split-shards but forgot to re-add them :x   So re-enable the
-compact calls and add an extra flag so we can skip size checks
when xapian-compact(1) is missing.

Fixes: 622e8c89 (*search: introduce open.lock for reader safety, 2025-10-08)
t/cindex.t

index de61ae0cd3d9a85845167c6b586a1d84df21f416..6e651a9aa57317e6d60dcfc44aea2a99982ef288 100644 (file)
@@ -78,10 +78,13 @@ ok(run_script([qw(-cindex -L medium --dangerous -q -d),
        "$tmp/med", '-g', $zp, '-g', "$tmp/wt0"]), 'cindex external medium');
 
 
+my $compact_ok;
 SKIP: {
        have_xapian_compact 2;
-       # ok(run_script([qw(-compact -q), "$tmp/ext"]), 'compact on full');
-       # ok(run_script([qw(-compact -q), "$tmp/med"]), 'compact on medium');
+       $compact_ok = ok(run_script([qw(-compact -q), "$tmp/ext"]),
+                       'compact on full')  &&
+               ok(run_script([qw(-compact -q), "$tmp/med"]),
+                       'compact on medium');
 }
 
 my $no_metadata_set = sub {
@@ -95,7 +98,8 @@ my $no_metadata_set = sub {
        }
 };
 
-{
+SKIP: {
+       skip 'xapian-compact missing or broken', 1 if !$compact_ok;
        my $mid_size = sum(map { -s $_ } glob("$tmp/med/cidx*/*/*"));
        my $full_size = sum(map { -s $_ } glob("$tmp/ext/cidx*/*/*"));
        ok($full_size > $mid_size, 'full size > mid size') or
@@ -108,6 +112,8 @@ my $no_metadata_set = sub {
        $full_size = sum(map { -s $_ } glob("$tmp/ext/cidx*/*/*"));
        ok($full_size > $mid_size, 'full size > mid size after reindex') or
                diag "full=$full_size mid=$mid_size";
+}
+{
        my $csrch = PublicInbox::CodeSearch->new("$tmp/med");
        my ($xdb0, @xdb) = $csrch->xdb_shards_flat;
        $no_metadata_set->(0, [], [ $xdb0 ]);