diff options
author | Eric Wong <e@80x24.org> | 2018-07-29 10:05:13 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2018-07-29 10:20:36 +0000 |
commit | 466df3e029fecdabac373d73989c7fceebe6ae28 (patch) | |
tree | ebd6e15fd155202ef251d14dedb39828dc983ca6 /t | |
parent | 9015a8af2909b0071e54b332bfafc4e5b8d0f6c2 (diff) | |
download | public-inbox-466df3e029fecdabac373d73989c7fceebe6ae28.tar.gz |
This reuses some of the configuration from -watch, but remains independent since some configurations will use -watch for some inboxes and -mda for others. The default remains "spamc" for -mda users so nothing changes without explicit configuration. Per-inbox configurations may also be supported in the future.
Diffstat (limited to 't')
-rw-r--r-- | t/v2mda.t | 65 |
1 files changed, 52 insertions, 13 deletions
@@ -35,11 +35,13 @@ my $mime = PublicInbox::MIME->create( my $mda = "blib/script/public-inbox-mda"; ok(-f "blib/script/public-inbox-mda", '-mda exists'); my $main_bin = getcwd()."/t/main-bin"; +my $fail_bin = getcwd()."/t/fail-bin"; local $ENV{PI_DIR} = "$tmpdir/foo"; +my $fail_path = "$fail_bin:blib/script:$ENV{PATH}"; local $ENV{PATH} = "$main_bin:blib/script:$ENV{PATH}"; -local $ENV{PI_EMERGENCY} = "$tmpdir/fail"; -ok(mkdir "$tmpdir/fail"); - +my $faildir = "$tmpdir/fail"; +local $ENV{PI_EMERGENCY} = $faildir; +ok(mkdir $faildir); my @cmd = (qw(public-inbox-init), "-V$V", $ibx->{name}, $ibx->{mainrepo}, 'http://localhost/test', $ibx->{address}->[0]); @@ -62,17 +64,54 @@ if ($V == 1) { ok(PublicInbox::Import::run_die($cmd, undef, $rdr), 'v1 indexed'); } my $msgs = $ibx->search->query(''); +is(scalar(@$msgs), 1, 'only got one message'); my $saved = $ibx->smsg_mime($msgs->[0]); is($saved->{mime}->as_string, $mime->as_string, 'injected message'); -my $patch = 't/data/0001.patch'; -open my $fh, '<', $patch or die "failed to open $patch: $!\n"; -$rdr = { 0 => fileno($fh) }; -ok(PublicInbox::Import::run_die(['public-inbox-mda'], undef, $rdr), - 'mda delivered a patch'); -my $post = $ibx->search->reopen->query('dfpost:6e006fd7'); -is(scalar(@$post), 1, 'got one result for dfpost'); -my $pre = $ibx->search->query('dfpre:090d998'); -is(scalar(@$pre), 1, 'got one result for dfpre'); -is($post->[0]->{blob}, $pre->[0]->{blob}, 'same message in both cases'); +{ + my @new = glob("$faildir/new/*"); + is_deeply(\@new, [], 'nothing in faildir'); + local $ENV{PATH} = $fail_path; + $mime->header_set('Message-ID', '<bar@foo>'); + ok($tmp->sysseek(0, SEEK_SET) && + $tmp->truncate(0) && + $tmp->print($mime->as_string) && + $tmp->flush && + $tmp->sysseek(0, SEEK_SET), + 'rewound and rewrite temporary file'); + my $cmd = ['public-inbox-mda']; + ok(PublicInbox::Import::run_die($cmd, undef, $rdr), + 'mda did not die on "spam"'); + @new = glob("$faildir/new/*"); + is(scalar(@new), 1, 'got a message in faildir'); + $msgs = $ibx->search->reopen->query(''); + is(scalar(@$msgs), 1, 'no new message'); + + my $config = "$ENV{PI_DIR}/config"; + ok(-f $config, 'config exists'); + my $k = 'publicinboxmda.spamcheck'; + is(system('git', 'config', "--file=$config", $k, 'none'), 0, + 'disabled spamcheck for mda'); + ok($tmp->sysseek(0, SEEK_SET), 'rewound input file'); + + ok(PublicInbox::Import::run_die($cmd, undef, $rdr), 'mda did not die'); + my @again = glob("$faildir/new/*"); + is_deeply(\@again, \@new, 'no new message in faildir'); + $msgs = $ibx->search->reopen->query(''); + is(scalar(@$msgs), 2, 'new message added OK'); +} + +{ + my $patch = 't/data/0001.patch'; + open my $fh, '<', $patch or die "failed to open $patch: $!\n"; + $rdr = { 0 => fileno($fh) }; + ok(PublicInbox::Import::run_die(['public-inbox-mda'], undef, $rdr), + 'mda delivered a patch'); + my $post = $ibx->search->reopen->query('dfpost:6e006fd7'); + is(scalar(@$post), 1, 'got one result for dfpost'); + my $pre = $ibx->search->query('dfpre:090d998'); + is(scalar(@$pre), 1, 'got one result for dfpre'); + is($post->[0]->{blob}, $pre->[0]->{blob}, 'same message in both cases'); +} + done_testing(); |