PublicInbox::Search always loads DBD::SQLite, so we
can't blindly "use" it in t/xcpdb-reshard.t. We also
need to account for that in TestCommon.
my @need;
for my $mod (@mods) {
if ($mod eq 'Search::Xapian') {
- require PublicInbox::Search;
- PublicInbox::Search::load_xapian() and next;
+ if (eval { require PublicInbox::Search } &&
+ PublicInbox::Search::load_xapian()) {
+ next;
+ }
} elsif ($mod eq 'Search::Xapian::WritableDatabase') {
- require PublicInbox::SearchIdx;
- PublicInbox::SearchIdx::load_xapian_writable() and next;
+ if (eval { require PublicInbox::SearchIdx } &&
+ PublicInbox::SearchIdx::load_xapian_writable()){
+ next;
+ }
} else {
eval "require $mod";
}
require_git('2.6');
use PublicInbox::MIME;
use PublicInbox::InboxWritable;
-use PublicInbox::Search;
+require PublicInbox::Search;
my $mime = PublicInbox::MIME->create(
header => [
# ensure docids in Xapian match NNTP article numbers
my $tot = 0;
my %tmp = %nums;
- my $XapianDatabase = $PublicInbox::Search::X{Database};
+ my $XapianDatabase = do {
+ no warnings 'once';
+ $PublicInbox::Search::X{Database};
+ };
foreach my $d (@new_shards) {
my $xdb = $XapianDatabase->new($d);
$tot += $xdb->get_doccount;