Mail-SpamAssassin-KeywordRu.../t/05_write.t

56 lines
1.6 KiB
Perl

#!/usr/bin/perl
# Basic test to ensure files can be found and read. Verification will come later
use Test::More;
use lib 'lib/';
use Mail::SpamAssassin::KeywordRuleGenerator;
my $id = '05';
my $kw = Mail::SpamAssassin::KeywordRuleGenerator->new( { 'id' => T.$id, 'debug' => 0, 'joinScores' => 0 } );
my $testdir = $ENV{'PWD'}.'/t/'.T.$id;
ok (!$kw->createDir($testdir), "Created output directory: '$ENV{'PWD'}/t/$id'");
$kw->setDir($testdir);
ok ($kw->getDir() eq $testdir, "Set output directory: '$ENV{'PWD'}/t/$id'");
my @files = ( 't/04_rules0.cf', 't/04_rules1.cf' );
my @failed = @{$kw->readAll( @files )};
ok(!scalar(@failed), "Load 'rules' hash with readAll");
$kw->writeAll();
my @files = glob($testdir.'/*.cf');
ok (scalar(@files) == 6, "Correct number of files generated");
my %expected = (
'50_T05_T_04_RULES0.cf' => 169,
'50_T05_T_04_RULES0_SCORES.cf' => 105,
'50_T05_T_04_RULES1.cf' => 148,
'50_T05_T_04_RULES1_SCORES.cf' => 97,
'51_T05.cf' => 60,
'51_T05_SCORES.cf' => 90
);
my %remaining = %expected;
foreach (@files) {
$e = $_;
$e =~ s/^(.*\/)?t\/T05\///;
if (open(my $fh, "<", $_)) {
while (<$fh>) {
$expected{$e}--;
}
close($fh);
}
ok ($expected{$e} == 0, "Correct number of lines found in $e");
delete($remaining{$e});
}
ok (!scalar(keys(%remaining)), "All expected output files found");
$failed = $kw->verifyOutput();
ok (!$failed, "Verified by spamassassin".($failed ? "\n$failed" : ""));
$kw->cleanDir();
done_testing();