X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fwatch_maildir_v2.t;h=ccc85c173d078719083e6ef83075841f17817e96;hb=3c39f9c942a6975245fda878e9b957d8d3367662;hp=5f968919dfff669080aa4af0909f5750d97965d0;hpb=b0e5062d43a96372801713ef78a78d6a1bc852bc;p=public-inbox.git diff --git a/t/watch_maildir_v2.t b/t/watch_maildir_v2.t index 5f968919..ccc85c17 100644 --- a/t/watch_maildir_v2.t +++ b/t/watch_maildir_v2.t @@ -1,4 +1,4 @@ -# Copyright (C) 2018 all contributors +# Copyright (C) 2018-2019 all contributors # License: AGPL-3.0+ use Test::More; use File::Temp qw/tempdir/; @@ -7,21 +7,21 @@ use Cwd; use PublicInbox::Config; require './t/common.perl'; require_git(2.6); -my @mods = qw(Filesys::Notify::Simple PublicInbox::V2Writable); +my @mods = qw(Search::Xapian DBD::SQLite Filesys::Notify::Simple); foreach my $mod (@mods) { eval "require $mod"; plan skip_all => "$mod missing for watch_maildir_v2.t" if $@; } - +require PublicInbox::V2Writable; my $tmpdir = tempdir('watch_maildir-v2-XXXXXX', TMPDIR => 1, CLEANUP => 1); -my $mainrepo = "$tmpdir/v2"; +my $inboxdir = "$tmpdir/v2"; my $maildir = "$tmpdir/md"; my $spamdir = "$tmpdir/spam"; use_ok 'PublicInbox::WatchMaildir'; use_ok 'PublicInbox::Emergency'; my $cfgpfx = "publicinbox.test"; my $addr = 'test-public@example.com'; -my @cmd = ('blib/script/public-inbox-init', '-V2', 'test', $mainrepo, +my @cmd = ('blib/script/public-inbox-init', '-V2', 'test', $inboxdir, 'http://example.com/v2list', $addr); local $ENV{PI_CONFIG} = "$tmpdir/pi_config"; is(system(@cmd), 0, 'public-inbox init OK'); @@ -40,14 +40,14 @@ ok(POSIX::mkfifo("$maildir/cur/fifo", 0777), 'create FIFO to ensure we do not get stuck on it :P'); my $sem = PublicInbox::Emergency->new($spamdir); # create dirs -my %orig = ( - "$cfgpfx.address" => $addr, - "$cfgpfx.mainrepo" => $mainrepo, - "$cfgpfx.watch" => "maildir:$maildir", - "$cfgpfx.filter" => 'PublicInbox::Filter::Vger', - "publicinboxlearn.watchspam" => "maildir:$spamdir" -); -my $config = PublicInbox::Config->new({%orig}); +my $orig = <new(\$orig); my $ibx = $config->lookup_name('test'); ok($ibx, 'found inbox by name'); my $srch = $ibx->search; @@ -56,7 +56,7 @@ PublicInbox::WatchMaildir->new($config)->scan('full'); my ($total, undef) = $srch->reopen->query(''); is($total, 1, 'got one revision'); -# my $git = PublicInbox::Git->new("$mainrepo/git/0.git"); +# my $git = PublicInbox::Git->new("$inboxdir/git/0.git"); # my @list = $git->qx(qw(rev-list refs/heads/master)); # is(scalar @list, 1, 'one revision in rev-list'); @@ -146,12 +146,12 @@ More majordomo info at http://vger.kernel.org/majordomo-info.html\n); my $v1pfx = "publicinbox.v1"; my $v1addr = 'v1-public@example.com'; is(system(qw(git init -q --bare), $v1repo), 0, 'v1 init OK'); - my $config = PublicInbox::Config->new({ - %orig, - "$v1pfx.address" => $v1addr, - "$v1pfx.mainrepo" => $v1repo, - "$v1pfx.watch" => "maildir:$maildir", - }); + my $cfg2 = <new(\$cfg2); my $both = < +List-Id: +Message-ID: +EOF + my $do_not_want = <<'EOF'; +From: +List-Id: +X-Mailing-List: no@example.com +Message-ID: +EOF + my $cfg = $orig."$cfgpfx.listid=i.want.you.to.want.me\n"; + PublicInbox::Emergency->new($maildir)->prepare(\$want); + PublicInbox::Emergency->new($maildir)->prepare(\$do_not_want); + my $config = PublicInbox::Config->new(\$cfg); + PublicInbox::WatchMaildir->new($config)->scan('full'); + $ibx = $config->lookup_name('test'); + my $num = $ibx->mm->num_for('do.want@example.com'); + ok(defined $num, 'List-ID matched for watch'); + $num = $ibx->mm->num_for('do.not.want@example.com'); + is($num, undef, 'unaccepted List-ID matched for watch'); + + $cfg = $orig."$cfgpfx.watchheader=X-Mailing-List:no\@example.com\n"; + $config = PublicInbox::Config->new(\$cfg); + PublicInbox::WatchMaildir->new($config)->scan('full'); + $ibx = $config->lookup_name('test'); + $num = $ibx->mm->num_for('do.not.want@example.com'); + ok(defined $num, 'X-Mailing-List matched'); +} + done_testing;