From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 5/9] t/mda: use only Maildir for testing
Date: Wed, 15 Jun 2016 00:37:38 +0000 [thread overview]
Message-ID: <20160615003742.22538-6-e@80x24.org> (raw)
In-Reply-To: <20160615003742.22538-1-e@80x24.org>
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 | 75 +++++++++++------------------------------------------------------
1 file changed, 12 insertions(+), 63 deletions(-)
diff --git a/t/mda.t b/t/mda.t
index 66ba859..3456699 100644
--- 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 ];
}
next prev parent reply other threads:[~2016-06-15 0:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-15 0:37 [PATCH 0/9] big mda filter changes Eric Wong
2016-06-15 0:37 ` [PATCH 1/9] drop dependency on File::Path::Expand Eric Wong
2016-06-15 0:37 ` [PATCH 2/9] t/feed.t: make IPC::Run usage optional Eric Wong
2016-06-15 0:37 ` [PATCH 3/9] learn: remove IPC::Run dependency Eric Wong
2016-06-15 0:37 ` [PATCH 4/9] t/mda.t: remove senseless use of Email::Filter Eric Wong
2016-06-15 0:37 ` Eric Wong [this message]
2016-06-15 0:37 ` [PATCH 6/9] mda: precheck no longer depends on Email::Filter Eric Wong
2016-06-15 0:37 ` [PATCH 7/9] filter: begin work on a new filter API Eric Wong
2016-06-15 0:37 ` [PATCH 8/9] emergency: implement new emergency Maildir delivery Eric Wong
2016-06-15 0:37 ` [PATCH 9/9] mda: hook up new filter functionality Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://public-inbox.org/README
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160615003742.22538-6-e@80x24.org \
--to=e@80x24.org \
--cc=meta@public-inbox.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).