BEGIN { plan
tests
=> SKIP ? 0 : 4 }
SKIP and
print
"# Skipping - clamd too broken on linux\n"
;
SKIP and
exit
(0);
do
"t/mkconf.pl"
;
my
$pid
=
fork
;
die
"Fork failed"
unless
defined
$pid
;
if
(!
$pid
) {
exec
"$ENV{CLAMD_PATH}/clamd -c clamav.conf"
;
die
"clamd failed to start: $!"
;
}
for
(1..10) {
last
if
(-e
"clamsock"
);
if
(
kill
(
0
=>
$pid
) == 0) {
die
"clamd appears to have died"
;
}
sleep
(1);
}
my
$av
= new File::Scan::ClamAV(
port
=>
"clamsock"
);
ok(
$av
);
ok(
$av
->quit);
sleep
(1);
ok(
$av
->ping,
undef
,
"Ping succeeded after quit"
);
$SIG
{ALRM} =
sub
{
kill
(
9
=>
$pid
); };
alarm
(5);
1
while
(
waitpid
(
$pid
,
&WNOHANG
) != -1);
ok(
kill
(
9
=>
$pid
), 0);
unlink
(
"clamsock"
);