#!/usr/bin/perl -T
use
SATest; sa_t_init(
"spamd_plugin"
);
plan
skip_all
=>
"Spamd tests disabled"
if
$SKIP_SPAMD_TESTS
;
plan
skip_all
=>
"Tests don't work on windows"
if
$RUNNING_ON_WINDOWS
;
plan
skip_all
=>
"UID nobody tests"
if
$SKIP_SETUID_NOBODY_TESTS
;
plan
tests
=> 6;
diag(
"NOTE: A rare single failure in this test may be a race condition in the test that can be ignored"
);
tstprefs ('
loadplugin myTestPlugin ../../../data/testplugin.pm
header MY_TEST_PLUGIN
eval
:check_test_plugin()
');
$ENV
{
'SPAMD_PLUGIN_COUNTER_FILE'
} = getcwd.
"/$workdir/spamd_plugin.tmp"
;
open
(COUNTER,
">$workdir/spamd_plugin.tmp"
);
print
COUNTER
"0"
;
close
COUNTER;
chmod
(0666,
"$workdir/spamd_plugin.tmp"
);
my
$sockpath
= mk_socket_tempdir().
"/spamd.sock"
;
start_spamd(
"-D -L --socketpath=$sockpath"
);
%patterns
= (
q{ test: called myTestPlugin, round 1 }
,
'called1'
);
ok (spamcrun (
"-U $sockpath < data/spam/001"
, \
&patterns_run_cb
));
checkfile(
$spamd_stderr
, \
&patterns_run_cb
);
ok_all_patterns();
%patterns
= (
q{ called myTestPlugin, round 2 }
,
'called2'
);
ok (spamcrun (
"-U $sockpath < data/nice/001"
, \
&patterns_run_cb
));
checkfile(
$spamd_stderr
, \
&patterns_run_cb
);
ok_all_patterns();
%patterns
= (
q{ called myTestPlugin, round 3 }
,
'called3'
);
ok (spamcrun (
"-U $sockpath < data/nice/001"
, \
&patterns_run_cb
));
checkfile(
$spamd_stderr
, \
&patterns_run_cb
);
ok_all_patterns();
stop_spamd();