* [PATCH 5/9] t/mda: use only Maildir for testing
2016-06-15 0:37 6% [PATCH 0/9] big mda filter changes Eric Wong
@ 2016-06-15 0:37 7% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2016-06-15 0:37 UTC (permalink / raw)
To: meta
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 ];
}
^ permalink raw reply related [relevance 7%]
* [PATCH 0/9] big mda filter changes
@ 2016-06-15 0:37 6% Eric Wong
2016-06-15 0:37 7% ` [PATCH 5/9] t/mda: use only Maildir for testing Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2016-06-15 0:37 UTC (permalink / raw)
To: meta
Eric Wong (9):
drop dependency on File::Path::Expand
t/feed.t: make IPC::Run usage optional
learn: remove IPC::Run dependency
t/mda.t: remove senseless use of Email::Filter
t/mda: use only Maildir for testing
mda: precheck no longer depends on Email::Filter
filter: begin work on a new filter API
emergency: implement new emergency Maildir delivery
mda: hook up new filter functionality
INSTALL | 3 -
Makefile.PL | 2 -
lib/PublicInbox/Config.pm | 3 +-
lib/PublicInbox/Emergency.pm | 96 +++++++++++
lib/PublicInbox/Filter.pm | 232 ---------------------------
lib/PublicInbox/Filter/Base.pm | 100 ++++++++++++
lib/PublicInbox/Filter/Mirror.pm | 12 ++
lib/PublicInbox/Filter/Vger.pm | 33 ++++
lib/PublicInbox/MDA.pm | 11 +-
script/public-inbox-learn | 42 +++--
script/public-inbox-mda | 135 ++++++++--------
t/emergency.t | 53 ++++++
t/feed.t | 18 +--
t/filter.t | 337 ---------------------------------------
t/filter_base.t | 81 ++++++++++
t/filter_mirror.t | 40 +++++
t/filter_vger.t | 46 ++++++
t/mda.t | 79 ++-------
t/precheck.t | 14 +-
19 files changed, 586 insertions(+), 751 deletions(-)
Note to self: get "git apply" to work on --irreversible-delete patches
^ permalink raw reply [relevance 6%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2016-06-15 0:37 6% [PATCH 0/9] big mda filter changes Eric Wong
2016-06-15 0:37 7% ` [PATCH 5/9] t/mda: use only Maildir for testing Eric Wong
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).