X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Finbox_idle.t;h=51379764f2703882232e0676c09a39208c7c71eb;hb=4eee5af6011cc8cdefb66c9729952c7eff5c0b0b;hp=61287200d9bbe65f493c1b66ad50befa23c76355;hpb=5ce7e26b1d7efc2fb1bb5310a756e7c873145246;p=public-inbox.git diff --git a/t/inbox_idle.t b/t/inbox_idle.t index 61287200..51379764 100644 --- a/t/inbox_idle.t +++ b/t/inbox_idle.t @@ -1,59 +1,52 @@ #!perl -w -# Copyright (C) 2020 all contributors +# Copyright (C) 2020-2021 all contributors # License: AGPL-3.0+ -use Test::More; +use strict; +use v5.10.1; use PublicInbox::TestCommon; use PublicInbox::Config; require_git 2.6; require_mods(qw(DBD::SQLite)); require PublicInbox::SearchIdx; use_ok 'PublicInbox::InboxIdle'; -use PublicInbox::InboxWritable; my ($tmpdir, $for_destroy) = tmpdir(); for my $V (1, 2) { my $inboxdir = "$tmpdir/$V"; - mkdir $inboxdir or BAIL_OUT("mkdir: $!"); - my %opt = ( - inboxdir => $inboxdir, - name => 'inbox-idle', - version => $V, - -primary_address => 'test@example.com', - indexlevel => 'basic', - ); - my $ibx = PublicInbox::Inbox->new({ %opt }); - $ibx = PublicInbox::InboxWritable->new($ibx); - my $obj = InboxIdleTestObj->new; - $ibx->init_inbox(0); - my $im = $ibx->importer(0); - if ($V == 1) { + my $ibx = create_inbox "idle$V", tmpdir => $inboxdir, version => $V, + indexlevel => 'basic', -no_gc => 1, sub { + my ($im, $ibx) = @_; # capture + $im->done; + $ibx->init_inbox(0); + $_[0] = undef; + return if $V != 1; my $sidx = PublicInbox::SearchIdx->new($ibx, 1); $sidx->idx_acquire; - $sidx->set_indexlevel; + $sidx->set_metadata_once; $sidx->idx_release; # allow watching on lockfile - } - my $pi_config = PublicInbox::Config->new(\<new; + my $pi_cfg = PublicInbox::Config->new(\<{-primary_address} EOF my $ident = 'whatever'; - $pi_config->each_inbox(sub { shift->subscribe_unlock($ident, $obj) }); - my $ii = PublicInbox::InboxIdle->new($pi_config); + $pi_cfg->each_inbox(sub { shift->subscribe_unlock($ident, $obj) }); + my $ii = PublicInbox::InboxIdle->new($pi_cfg); ok($ii, 'InboxIdle created'); SKIP: { skip('inotify or kqueue missing', 1) unless $ii->{sock}; ok(fileno($ii->{sock}) >= 0, 'fileno() gave valid FD'); } + my $im = $ibx->importer(0); ok($im->add(eml_load('t/utf8.eml')), "$V added"); $im->done; - PublicInbox::SearchIdx->new($ibx)->index_sync if $V == 1; $ii->event_step; is(scalar @{$obj->{called}}, 1, 'called on unlock'); - $pi_config->each_inbox(sub { shift->unsubscribe_unlock($ident) }); + $pi_cfg->each_inbox(sub { shift->unsubscribe_unlock($ident) }); ok($im->add(eml_load('t/data/0001.patch')), "$V added #2"); $im->done; - PublicInbox::SearchIdx->new($ibx)->index_sync if $V == 1; $ii->event_step; is(scalar @{$obj->{called}}, 1, 'not called when unsubbed'); $ii->close;