X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fv2mda.t;h=c2118a89cf271c0f7240534a2c7bc2cb27766da9;hb=95bdac7f09c69036efed537a4d03d5bdd2ae4eb6;hp=1c90a5b33fa91b5d0f5ba3fea7647258b50d3358;hpb=50c822076abee76c3133ffc3482488392eecedfb;p=public-inbox.git diff --git a/t/v2mda.t b/t/v2mda.t index 1c90a5b3..c2118a89 100644 --- a/t/v2mda.t +++ b/t/v2mda.t @@ -1,24 +1,20 @@ -# Copyright (C) 2018 all contributors +# Copyright (C) 2018-2020 all contributors # License: AGPL-3.0+ use strict; use warnings; use Test::More; use PublicInbox::MIME; -use File::Temp qw/tempdir/; use Fcntl qw(SEEK_SET); use Cwd; -require './t/common.perl'; +use PublicInbox::TestCommon; require_git(2.6); my $V = 2; -foreach my $mod (qw(DBD::SQLite Search::Xapian)) { - eval "require $mod"; - plan skip_all => "$mod missing for v2mda.t" if $@; -} +require_mods(qw(DBD::SQLite Search::Xapian)); use_ok 'PublicInbox::V2Writable'; -my $tmpdir = tempdir('pi-v2mda-XXXXXX', TMPDIR => 1, CLEANUP => 1); +my ($tmpdir, $for_destroy) = tmpdir(); my $ibx = { - mainrepo => "$tmpdir/inbox", + inboxdir => "$tmpdir/inbox", name => 'test-v2writable', address => [ 'test@example.com' ], }; @@ -34,8 +30,6 @@ my $mime = PublicInbox::MIME->create( body => "hello world\n", ); -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"; @@ -44,26 +38,19 @@ local $ENV{PATH} = "$main_bin:blib/script:$ENV{PATH}"; 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', +my @cmd = (qw(-init), "-V$V", $ibx->{name}, + $ibx->{inboxdir}, 'http://localhost/test', $ibx->{address}->[0]); -ok(PublicInbox::Import::run_die(\@cmd), 'initialized v2 inbox'); - -open my $tmp, '+>', undef or die "failed to open anonymous tempfile: $!"; -ok($tmp->print($mime->as_string), 'wrote to temporary file'); -ok($tmp->flush, 'flushed temporary file'); -ok($tmp->sysseek(0, SEEK_SET), 'seeked'); +ok(run_script(\@cmd), 'initialized v2 inbox'); -my $rdr = { 0 => fileno($tmp) }; +my $rdr = { 0 => \($mime->as_string) }; local $ENV{ORIGINAL_RECIPIENT} = 'test@example.com'; -ok(PublicInbox::Import::run_die(['public-inbox-mda'], undef, $rdr), - 'mda delivered a message'); +ok(run_script(['-mda'], undef, $rdr), 'mda delivered a message'); $ibx = PublicInbox::Inbox->new($ibx); if ($V == 1) { - my $cmd = [ 'public-inbox-index', "$tmpdir/inbox" ]; - ok(PublicInbox::Import::run_die($cmd, undef, $rdr), 'v1 indexed'); + ok(run_script([ '-index', "$tmpdir/inbox" ]), 'v1 indexed'); } my $msgs = $ibx->search->query(''); is(scalar(@$msgs), 1, 'only got one message'); @@ -75,15 +62,8 @@ is($saved->{mime}->as_string, $mime->as_string, 'injected message'); is_deeply(\@new, [], 'nothing in faildir'); local $ENV{PATH} = $fail_path; $mime->header_set('Message-ID', ''); - 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"'); + $rdr->{0} = \($mime->as_string); + ok(run_script(['-mda'], 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(''); @@ -94,9 +74,8 @@ is($saved->{mime}->as_string, $mime->as_string, 'injected message'); 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'); + ok(run_script(['-mda'], 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(''); @@ -106,9 +85,8 @@ 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'); + $rdr->{0} = \(do { local $/; <$fh> }); + ok(run_script(['-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');