From 20ddcb02821ff3bf8afd2c2279e0889492c93fd9 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 14 Jun 2019 17:13:04 +0000 Subject: [PATCH] search: require PublicInbox::Inbox ref here 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 c9330332..10f716ca 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 9903f427..098c97cd 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 13a44a3b..10bf8c65 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 d4c1e150..a049c931 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); -- 2.48.1