]> Sergey Matveev's repositories - public-inbox.git/commitdiff
t/mda: use only Maildir for testing
authorEric Wong <e@80x24.org>
Wed, 15 Jun 2016 00:14:25 +0000 (00:14 +0000)
committerEric Wong <e@80x24.org>
Wed, 15 Jun 2016 00:15:10 +0000 (00:15 +0000)
Remove mbox tests since mbox is unreliable due to raciness
and incompatible implementations.  We will drop support for
mbox emergency destinations, soon.

t/mda.t

diff --git a/t/mda.t b/t/mda.t
index 66ba859fd8ce0451905bd2cab322987e9129d366..3456699a3ad04144b4fcccc8f0a9d9209e0c2b4f 100644 (file)
--- a/t/mda.t
+++ b/t/mda.t
@@ -22,7 +22,7 @@ my $fail_bin = getcwd()."/t/fail-bin";
 my $fail_path = "$fail_bin:$ENV{PATH}"; # for spamc spam mock
 my $addr = 'test-public@example.com';
 my $cfgpfx = "publicinbox.test";
-my $failbox = "$home/fail.mbox";
+my $faildir = "$home/faildir/";
 my $mime;
 
 {
@@ -72,7 +72,7 @@ die $@ if $@;
 
 {
        my $good_rev;
-       local $ENV{PI_EMERGENCY} = $failbox;
+       local $ENV{PI_EMERGENCY} = $faildir;
        local $ENV{HOME} = $home;
        local $ENV{ORIGINAL_RECIPIENT} = $addr;
        my $simple = Email::Simple->new(<<EOF);
@@ -103,12 +103,14 @@ EOF
 
        # ensure failures work, fail with bad spamc
        {
-               ok(!-e $failbox, "nothing in PI_EMERGENCY before");
+               my @prev = <$faildir/new/*>;
+               is(scalar @prev, 0 , "nothing in PI_EMERGENCY before");
                local $ENV{PATH} = $fail_path;
                run([$mda], \$in);
                my @revs = `git --git-dir=$maindir rev-list HEAD`;
                is(scalar @revs, 1, "bad revision not committed");
-               ok(-s $failbox > 0, "PI_EMERGENCY is written to");
+               my @new = <$faildir/new/*>;
+               is(scalar @new, 1, "PI_EMERGENCY is written to");
        }
 
        fail_bad_header($good_rev, "bad recipient", <<"");
@@ -158,7 +160,7 @@ Date: deadbeef
 
 # spam training
 {
-       local $ENV{PI_EMERGENCY} = $failbox;
+       local $ENV{PI_EMERGENCY} = $faildir;
        local $ENV{HOME} = $home;
        local $ENV{ORIGINAL_RECIPIENT} = $addr;
        local $ENV{PATH} = $main_path;
@@ -193,7 +195,7 @@ EOF
 
 # train ham message
 {
-       local $ENV{PI_EMERGENCY} = $failbox;
+       local $ENV{PI_EMERGENCY} = $faildir;
        local $ENV{HOME} = $home;
        local $ENV{ORIGINAL_RECIPIENT} = $addr;
        local $ENV{PATH} = $main_path;
@@ -263,72 +265,19 @@ EOF
        }
 }
 
-# faildir - emergency destination is maildir
-{
-       my $faildir= "$home/faildir/";
-       local $ENV{PI_EMERGENCY} = $faildir;
-       local $ENV{HOME} = $home;
-       local $ENV{ORIGINAL_RECIPIENT} = $addr;
-       local $ENV{PATH} = $fail_path;
-       my $in = <<EOF;
-From: Faildir <faildir\@example.com>
-To: You <you\@example.com>
-Cc: $addr
-Message-ID: <faildir\@example.com>
-Subject: faildir subject
-Date: Thu, 01 Jan 1970 00:00:00 +0000
-
-EOF
-       run([$mda], \$in);
-       ok(-d $faildir, "emergency exists");
-       my @new = glob("$faildir/new/*");
-       is(scalar(@new), 1, "message delivered");
-       is(unlink(@new), 1, "removed emergency message");
-
-       local $ENV{PATH} = $main_path;
-       $in = <<EOF;
-From: Faildir <faildir\@example.com>
-To: $addr
-Content-Type: text/html
-Message-ID: <faildir\@example.com>
-Subject: faildir subject
-Date: Thu, 01 Jan 1970 00:00:00 +0000
-
-<html><body>bad</body></html>
-EOF
-       my $out = '';
-       my $err = '';
-       run([$mda], \$in, \$out, \$err);
-       isnt($?, 0, "mda exited with failure");
-       is(length $out, 0, 'nothing in stdout');
-       isnt(length $err, 0, 'error message in stderr');
-
-       @new = glob("$faildir/new/*");
-       is(scalar(@new), 0, "new message did not show up");
-
-       # reject multipart again
-       $in = $mime->as_string;
-       $err = '';
-       run([$mda], \$in, \$out, \$err);
-       isnt($?, 0, "mda exited with failure");
-       is(length $out, 0, 'nothing in stdout');
-       isnt(length $err, 0, 'error message in stderr');
-       @new = glob("$faildir/new/*");
-       is(scalar(@new), 0, "new message did not show up");
-}
-
 done_testing();
 
 sub fail_bad_header {
        my ($good_rev, $msg, $in) = @_;
-       open my $fh, '>', $failbox or die "failed to open $failbox: $!\n";
-       close $fh or die "failed to close $failbox: $!\n";
+       my @f = glob("$faildir/*/*");
+       unlink @f if @f;
        my ($out, $err) = ("", "");
        local $ENV{PATH} = $main_path;
        run([$mda], \$in, \$out, \$err);
        my $rev = `git --git-dir=$maindir rev-list HEAD`;
        chomp $rev;
        is($rev, $good_rev, "bad revision not commited ($msg)");
-       ok(-s $failbox > 0, "PI_EMERGENCY is written to ($msg)");
+       @f = glob("$faildir/*/*");
+       is(scalar @f, 1, "faildir written to");
        [ $in, $out, $err ];
 }