about summary refs log tree commit homepage
path: root/t/watch_filter_rubylang.t
diff options
context:
space:
mode:
Diffstat (limited to 't/watch_filter_rubylang.t')
-rw-r--r--t/watch_filter_rubylang.t50
1 files changed, 24 insertions, 26 deletions
diff --git a/t/watch_filter_rubylang.t b/t/watch_filter_rubylang.t
index 6513f30b..f72feb9f 100644
--- a/t/watch_filter_rubylang.t
+++ b/t/watch_filter_rubylang.t
@@ -1,12 +1,9 @@
-# Copyright (C) 2019-2020 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
-use strict;
-use warnings;
+use v5.12;
 use PublicInbox::TestCommon;
-use Test::More;
 use PublicInbox::Eml;
-use PublicInbox::Config;
-require_mods(qw(DBD::SQLite Search::Xapian));
+require_mods(qw(DBD::SQLite Xapian));
 use_ok 'PublicInbox::Watch';
 use_ok 'PublicInbox::Emergency';
 my ($tmpdir, $for_destroy) = tmpdir();
@@ -25,17 +22,13 @@ SKIP: {
 for my $v (@v) {
         my @warn;
         local $SIG{__WARN__} = sub { push @warn, @_ };
-        my $cfgpfx = "publicinbox.$v";
         my $inboxdir = "$tmpdir/$v";
         my $maildir = "$tmpdir/md-$v";
         my $spamdir = "$tmpdir/spam-$v";
         my $addr = "test-$v\@example.com";
-        my @cmd = ('-init', "-$v", $v, $inboxdir,
+        my @cmd = ('-init', '-Lfull', "-$v", $v, $inboxdir,
                 "http://example.com/$v", $addr);
-        ok(run_script(\@cmd), 'public-inbox init OK');
-        if ($v eq 'V1') {
-                ok(run_script(['-index', $inboxdir]), 'v1 indexed');
-        }
+        ok(run_script(\@cmd), 'public-inbox init');
         PublicInbox::Emergency->new($spamdir);
 
         for my $i (1..15) {
@@ -63,20 +56,21 @@ Date: Sat, 05 Jan 2019 04:19:17 +0000
 spam
 EOF
         PublicInbox::Emergency->new($maildir)->prepare(\"$spam");
-
-        my $orig = <<EOF;
-$cfgpfx.address=$addr
-$cfgpfx.inboxdir=$inboxdir
-$cfgpfx.watch=maildir:$maildir
-$cfgpfx.filter=PublicInbox::Filter::RubyLang
-$cfgpfx.altid=serial:alerts:file=msgmap.sqlite3
-publicinboxwatch.watchspam=maildir:$spamdir
-EOF
-        my $config = PublicInbox::Config->new(\$orig);
-        my $ibx = $config->lookup_name($v);
+        my $cfg = cfg_new $tmpdir, <<EOM;
+[publicinbox "$v"]
+        address = $addr
+        inboxdir = $inboxdir
+        watch = maildir:$maildir
+        filter = PublicInbox::Filter::RubyLang
+        altid = serial:alerts:file=msgmap.sqlite3
+[publicinboxwatch]
+        watchspam = maildir:$spamdir
+EOM
+        my $ibx = $cfg->lookup_name($v);
+        $ibx->{-no_fsync} = 1;
         ok($ibx, 'found inbox by name');
 
-        my $w = PublicInbox::Watch->new($config);
+        my $w = PublicInbox::Watch->new($cfg);
         for my $i (1..2) {
                 $w->scan('full');
         }
@@ -101,8 +95,12 @@ EOF
         }
         $w->scan('full');
 
-        $config = PublicInbox::Config->new(\$orig);
-        $ibx = $config->lookup_name($v);
+        # ensure orderly destruction to avoid SQLite segfault:
+        PublicInbox::DS->Reset;
+
+        $cfg = PublicInbox::Config->new($cfg->{-f});
+        $ibx = $cfg->lookup_name($v);
+        $ibx->{-no_fsync} = 1;
         is($ibx->search->reopen->mset('b:spam')->size, 0, 'spam removed');
 
         is_deeply([], \@warn, 'no warnings');