# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
######################### We start with some black magic to print on failure.
# Change 1..1 below to 1..last_test_to_print .
# (It may become useful if the test is moved to ./t subdirectory.)
BEGIN { $| = 1; print "1..2\n"; }
END {print "not ok 1\n" unless $loaded;}
use Cwd;
use CTest;
$TCTEST = 'Mail::SpamCannibal::DNSBLserver::CTest';
$loaded = 1;
print "ok 1\n";
######################### End of black magic.
# Insert your test code below (better if it prints "ok 13"
# (correspondingly "not ok 13") depending on the success of chunk 13
# of the test code):
$test = 2;
umask 007;
foreach my $dir (qw(tmp tmp.dbhome tmp.bogus)) {
if (-d $dir) { # clean up previous test runs
opendir(T,$dir);
@_ = grep(!/^\./, readdir(T));
closedir T;
foreach(@_) {
unlink "$dir/$_";
}
rmdir $dir or die "COULD NOT REMOVE $dir DIRECTORY\n";
}
unlink $dir if -e $dir; # remove files of this name as well
}
sub ok {
print "ok $test\n";
++$test;
}
my $localdir = cwd();
my $extra;
# input array @_ used in child process after } else {
sub getmaintxt {
$extra = '';
if (open(FROMCHILD, "-|")) {
while (my $record = <FROMCHILD>) {
$extra .= $record;
}
} else {
# program name is always argv[0]
unless (open STDERR, '>&STDOUT') {
print "can't dup STDERR to /dev/null: $!";
exit;
}
&{"${TCTEST}::t_main"}('CTest',@_);
exit;
}
close FROMCHILD;
}
# check contents of extra print variables
sub checkextra {
my ($x) = @_;
if($x) {
print "UNMATCHED RETURN TEXT\n$extra\nnot "
unless $extra =~ /^$x/;
} else {
print "UNEXPECTED RETURN TEXT\n$extra\nnot "
if $extra;
}
&ok;
}
## test 2 - check for bailout on pid running found
my @x = ('-o', '-r', $localdir .'/tmp', '-n', 'xx.yy.com', '-a', '11.22.33.44', '-e', 'no message');
mkdir './tmp',0755;
open(F,'>'. "${localdir}/tmp/dnsbls.pid")
or die "could not open ${localdir}/tmp/dnsbls.pid for testing\n";
print F "$$\n";
close F;
getmaintxt(@x);
checkextra( $$ . ' already running...');