* [PATCH 1/2] searchidx: require PublicInbox::Inbox (or InboxWritable) ref
2019-06-14 17:17 [PATCH 0/2] search*: require Inbox refs for ->new Eric Wong
@ 2019-06-14 17:17 ` Eric Wong
2019-06-14 17:17 ` [PATCH 2/2] search: require PublicInbox::Inbox ref here Eric Wong
1 sibling, 0 replies; 3+ messages in thread
From: Eric Wong @ 2019-06-14 17:17 UTC (permalink / raw)
To: meta
PublicInbox::Inbox objects have minimal dependencies, so
drop code to support old tests which existed before the
PublicInbox::Inbox object came into existence.
---
lib/PublicInbox/SearchIdx.pm | 35 +++++++++++++----------------------
t/nntpd.t | 4 ++--
t/psgi_search.t | 4 +++-
t/search-thr-index.t | 4 +++-
t/search.t | 7 ++++---
5 files changed, 25 insertions(+), 29 deletions(-)
diff --git a/lib/PublicInbox/SearchIdx.pm b/lib/PublicInbox/SearchIdx.pm
index 7cd67f1..a088ce7 100644
--- a/lib/PublicInbox/SearchIdx.pm
+++ b/lib/PublicInbox/SearchIdx.pm
@@ -30,31 +30,22 @@ my $xapianlevels = qr/\A(?:full|medium)\z/;
sub new {
my ($class, $ibx, $creat, $part) = @_;
+ ref $ibx or die "BUG: expected PublicInbox::Inbox object: $ibx";
my $levels = qr/\A(?:full|medium|basic)\z/;
- my $mainrepo = $ibx; # for "public-inbox-index" w/o entry in config
- my $git_dir = $mainrepo;
- my ($altid, $git);
- my $version = 1;
+ my $mainrepo = $ibx->{mainrepo};
+ my $version = $ibx->{version} || 1;
my $indexlevel = 'full';
- if (ref $ibx) {
- $mainrepo = $ibx->{mainrepo};
- $altid = $ibx->{altid};
- $version = $ibx->{version} || 1;
- if ($altid) {
- require PublicInbox::AltId;
- $altid = [ map {
- PublicInbox::AltId->new($ibx, $_);
- } @$altid ];
- }
- if ($ibx->{indexlevel}) {
- if ($ibx->{indexlevel} =~ $levels) {
- $indexlevel = $ibx->{indexlevel};
- } else {
- die("Invalid indexlevel $ibx->{indexlevel}\n");
- }
+ my $altid = $ibx->{altid};
+ if ($altid) {
+ require PublicInbox::AltId;
+ $altid = [ map { PublicInbox::AltId->new($ibx, $_); } @$altid ];
+ }
+ if ($ibx->{indexlevel}) {
+ if ($ibx->{indexlevel} =~ $levels) {
+ $indexlevel = $ibx->{indexlevel};
+ } else {
+ die("Invalid indexlevel $ibx->{indexlevel}\n");
}
- } else { # FIXME: old tests: old tests
- $ibx = { mainrepo => $git_dir, version => 1 };
}
$ibx = PublicInbox::InboxWritable->new($ibx);
my $self = bless {
diff --git a/t/nntpd.t b/t/nntpd.t
index a95fb6f..c37880b 100644
--- a/t/nntpd.t
+++ b/t/nntpd.t
@@ -91,7 +91,7 @@ EOF
$im->add($mime);
$im->done;
if ($version == 1) {
- my $s = PublicInbox::SearchIdx->new($mainrepo, 1);
+ my $s = PublicInbox::SearchIdx->new($ibx, 1);
$s->index_sync;
}
}
@@ -243,7 +243,7 @@ Date: Fri, 02 Oct 1993 00:00:00 +0000
$im->add($for_leafnode);
$im->done;
if ($version == 1) {
- my $s = PublicInbox::SearchIdx->new($mainrepo, 1);
+ my $s = PublicInbox::SearchIdx->new($ibx, 1);
$s->index_sync;
}
my $hdr = $n->head("<$long_hdr>");
diff --git a/t/psgi_search.t b/t/psgi_search.t
index a650767..bbf5a96 100644
--- a/t/psgi_search.t
+++ b/t/psgi_search.t
@@ -6,6 +6,7 @@ use Test::More;
use File::Temp qw/tempdir/;
use Email::MIME;
use PublicInbox::Config;
+use PublicInbox::Inbox;
use PublicInbox::WWW;
use bytes (); # only for bytes::length
my @mods = qw(DBD::SQLite Search::Xapian HTTP::Request::Common Plack::Test
@@ -19,7 +20,8 @@ my $tmpdir = tempdir('pi-psgi-search.XXXXXX', TMPDIR => 1, CLEANUP => 1);
my $git_dir = "$tmpdir/a.git";
is(0, system(qw(git init -q --bare), $git_dir), "git init (main)");
-my $rw = PublicInbox::SearchIdx->new($git_dir, 1);
+my $ibx = PublicInbox::Inbox->new({mainrepo => $git_dir});
+my $rw = PublicInbox::SearchIdx->new($ibx, 1);
ok($rw, "search indexer created");
my $digits = '10010260936330';
my $ua = 'Pine.LNX.4.10';
diff --git a/t/search-thr-index.t b/t/search-thr-index.t
index 1872af8..0f593c2 100644
--- a/t/search-thr-index.t
+++ b/t/search-thr-index.t
@@ -13,11 +13,13 @@ foreach my $mod (@mods) {
plan skip_all => "missing $mod for $0" if $@;
}
require PublicInbox::SearchIdx;
+require PublicInbox::Inbox;
my $tmpdir = tempdir('pi-search-thr-index.XXXXXX', TMPDIR => 1, CLEANUP => 1);
my $git_dir = "$tmpdir/a.git";
is(0, system(qw(git init -q --bare), $git_dir), "git init (main)");
-my $rw = PublicInbox::SearchIdx->new($git_dir, 1);
+my $ibx = PublicInbox::Inbox->new({mainrepo => $git_dir});
+my $rw = PublicInbox::SearchIdx->new($ibx, 1);
ok($rw, "search indexer created");
my $data = <<'EOF';
Subject: [RFC 00/14]
diff --git a/t/search.t b/t/search.t
index 538baef..d4c1e15 100644
--- a/t/search.t
+++ b/t/search.t
@@ -9,18 +9,19 @@ foreach my $mod (@mods) {
plan skip_all => "missing $mod for $0" if $@;
};
require PublicInbox::SearchIdx;
+require PublicInbox::Inbox;
use File::Temp qw/tempdir/;
use Email::MIME;
my $tmpdir = tempdir('pi-search-XXXXXX', TMPDIR => 1, CLEANUP => 1);
my $git_dir = "$tmpdir/a.git";
+my $ibx = PublicInbox::Inbox->new({ mainrepo => $git_dir });
my ($root_id, $last_id);
is(0, system(qw(git init --shared -q --bare), $git_dir), "git init (main)");
eval { PublicInbox::Search->new($git_dir)->xdb };
ok($@, "exception raised on non-existent DB");
-my $rw = PublicInbox::SearchIdx->new($git_dir, 1);
-my $ibx = $rw->{-inbox};
+my $rw = PublicInbox::SearchIdx->new($ibx, 1);
$ibx->with_umask(sub {
$rw->_xdb_acquire;
$rw->_xdb_release;
@@ -29,7 +30,7 @@ $rw = undef;
my $ro = PublicInbox::Search->new($git_dir);
my $rw_commit = sub {
$rw->commit_txn_lazy if $rw;
- $rw = PublicInbox::SearchIdx->new($git_dir, 1);
+ $rw = PublicInbox::SearchIdx->new($ibx, 1);
$rw->{qp_flags} = 0; # quiet a warning
$rw->begin_txn_lazy;
};
--
EW
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] search: require PublicInbox::Inbox ref here
2019-06-14 17:17 [PATCH 0/2] search*: require Inbox refs for ->new Eric Wong
2019-06-14 17:17 ` [PATCH 1/2] searchidx: require PublicInbox::Inbox (or InboxWritable) ref Eric Wong
@ 2019-06-14 17:17 ` Eric Wong
1 sibling, 0 replies; 3+ messages in thread
From: Eric Wong @ 2019-06-14 17:17 UTC (permalink / raw)
To: meta
No sense in supporting multiple methods of initialization
for an internal class.
---
lib/PublicInbox/Inbox.pm | 2 +-
lib/PublicInbox/Search.pm | 15 +++++----------
t/altid.t | 5 +++--
t/search.t | 4 ++--
4 files changed, 11 insertions(+), 15 deletions(-)
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm
index c933033..10f716c 100644
--- a/lib/PublicInbox/Inbox.pm
+++ b/lib/PublicInbox/Inbox.pm
@@ -191,7 +191,7 @@ sub search ($;$) {
my $srch = $self->{search} ||= eval {
_cleanup_later($self);
require PublicInbox::Search;
- PublicInbox::Search->new($self, $self->{altid});
+ PublicInbox::Search->new($self);
};
($over_only || eval { $srch->xdb }) ? $srch : undef;
}
diff --git a/lib/PublicInbox/Search.pm b/lib/PublicInbox/Search.pm
index 9903f42..098c97c 100644
--- a/lib/PublicInbox/Search.pm
+++ b/lib/PublicInbox/Search.pm
@@ -170,17 +170,12 @@ sub xdb ($) {
}
sub new {
- my ($class, $mainrepo, $altid) = @_;
- my $version = 1;
- my $ibx = $mainrepo;
- if (ref $ibx) {
- $version = $ibx->{version} || 1;
- $mainrepo = $ibx->{mainrepo};
- }
+ my ($class, $ibx) = @_;
+ ref $ibx or die "BUG: expected PublicInbox::Inbox object: $ibx";
my $self = bless {
- mainrepo => $mainrepo,
- altid => $altid,
- version => $version,
+ mainrepo => $ibx->{mainrepo},
+ altid => $ibx->{altid},
+ version => $ibx->{version} // 1,
}, $class;
my $dir = xdir($self, 1);
$self->{over_ro} = PublicInbox::Over->new("$dir/over.sqlite3");
diff --git a/t/altid.t b/t/altid.t
index 13a44a3..10bf8c6 100644
--- a/t/altid.t
+++ b/t/altid.t
@@ -17,6 +17,7 @@ my $tmpdir = tempdir('pi-altid-XXXXXX', TMPDIR => 1, CLEANUP => 1);
my $git_dir = "$tmpdir/a.git";
my $alt_file = "$tmpdir/another-nntp.sqlite3";
my $altid = [ "serial:gmane:file=$alt_file" ];
+my $ibx;
{
my $mm = PublicInbox::Msgmap->new_file($alt_file, 1);
@@ -42,14 +43,14 @@ my $altid = [ "serial:gmane:file=$alt_file" ];
$im->done;
}
{
- my $ibx = PublicInbox::Inbox->new({mainrepo => $git_dir});
+ $ibx = PublicInbox::Inbox->new({mainrepo => $git_dir});
$ibx->{altid} = $altid;
my $rw = PublicInbox::SearchIdx->new($ibx, 1);
$rw->index_sync;
}
{
- my $ro = PublicInbox::Search->new($git_dir, $altid);
+ my $ro = PublicInbox::Search->new($ibx);
my $msgs = $ro->query("gmane:1234");
is_deeply([map { $_->mid } @$msgs], ['a@example.com'], 'got one match');
diff --git a/t/search.t b/t/search.t
index d4c1e15..a049c93 100644
--- a/t/search.t
+++ b/t/search.t
@@ -18,7 +18,7 @@ my $ibx = PublicInbox::Inbox->new({ mainrepo => $git_dir });
my ($root_id, $last_id);
is(0, system(qw(git init --shared -q --bare), $git_dir), "git init (main)");
-eval { PublicInbox::Search->new($git_dir)->xdb };
+eval { PublicInbox::Search->new($ibx)->xdb };
ok($@, "exception raised on non-existent DB");
my $rw = PublicInbox::SearchIdx->new($ibx, 1);
@@ -27,7 +27,7 @@ $ibx->with_umask(sub {
$rw->_xdb_release;
});
$rw = undef;
-my $ro = PublicInbox::Search->new($git_dir);
+my $ro = PublicInbox::Search->new($ibx);
my $rw_commit = sub {
$rw->commit_txn_lazy if $rw;
$rw = PublicInbox::SearchIdx->new($ibx, 1);
--
EW
^ permalink raw reply related [flat|nested] 3+ messages in thread