use
POSIX
qw(WIFEXITED WIFSIGNALED WIFSTOPPED WEXITSTATUS WTERMSIG WSTOPSIG)
;
use
vars
qw($RUNNING_ON_WINDOWS
$SKIP_SETUID_NOBODY_TESTS $SKIP_DNSBL_TESTS
$have_inet4 $have_inet6
$workdir $siterules $localrules $userrules $userstate
$keep_workdir $mainpid)
;
BEGIN {
$ENV
{
'PATH'
} =
'/bin:/usr/bin:/usr/local/bin'
;
delete
@ENV
{
qw(IFS CDPATH ENV BASH_ENV)
};
}
sub
sa_t_init {
my
$tname
=
shift
;
my
$perl_path
;
my
$perl_cmd
;
if
(
$config
{PERL_PATH}) {
$perl_path
=
$config
{PERL_PATH};
}
elsif
($^X =~ m|^/|) {
$perl_path
= $^X;
}
else
{
$perl_path
=
$Config
{perlpath};
$perl_path
=~ s|/[^/]*$|/$^X|;
}
$perl_cmd
=
$perl_path
;
if
(
$ENV
{
'PERL5OPT'
}) {
my
$o
=
$ENV
{
'PERL5OPT'
};
if
(
$o
=~ /(Devel::Cover)/) {
warn
"# setting TEST_PERL_TAINT=no to avoid lack of taint-safety in $1\n"
;
$ENV
{
'TEST_PERL_TAINT'
} =
'no'
;
}
$perl_cmd
.=
" \"$o\""
;
}
$perl_cmd
.=
" -T"
if
!
defined
(
$ENV
{
'TEST_PERL_TAINT'
}) or
$ENV
{
'TEST_PERL_TAINT'
} ne
'no'
;
$perl_cmd
.=
" -w"
if
!
defined
(
$ENV
{
'TEST_PERL_WARN'
}) or
$ENV
{
'TEST_PERL_WARN'
} ne
'no'
;
my
@pathdirs
=
@INC
;
if
(
$ENV
{
'PERL5LIB'
}) {
@pathdirs
=
split
(
$Config
{path_sep},
$ENV
{
'PERL5LIB'
});
}
my
$inc_opts
=
join
(
' -I'
,
map
{
my
$pathdir
=
$_
;
my
$canonpathdir
= File::Spec->canonpath(Cwd::realpath(
$pathdir
))
if
((-d
$pathdir
) and File::Spec->file_name_is_absolute(
$pathdir
));
if
(
defined
$canonpathdir
) {
$canonpathdir
=~ /^(.*)\z/s;
$canonpathdir
= $1;
}
((
defined
$canonpathdir
))?(
$canonpathdir
):()
}
@pathdirs
);
$perl_cmd
.=
" -I$inc_opts"
if
(
$inc_opts
);
$scr
=
$ENV
{
'SPAMASSASSIN_SCRIPT'
};
$scr
||=
"$perl_cmd ../spamassassin.raw"
;
$salearn
=
$ENV
{
'SALEARN_SCRIPT'
};
$salearn
||=
"$perl_cmd ../sa-learn.raw"
;
$saawl
=
$ENV
{
'SAAWL_SCRIPT'
};
$saawl
||=
"$perl_cmd ../sa-awl"
;
(-f
"t/test_dir"
) &&
chdir
(
"t"
);
-f
"test_dir"
or
die
"FATAL: not in test directory?\n"
;
mkdir
(
"log"
, 0755);
-d
"log"
or
die
"FATAL: failed to create log dir\n"
;
chmod
(0755,
"log"
);
return
if
$tname
;
mkdir
(
$siterules
) or
die
"FATAL: failed to create $siterules\n"
;
mkdir
(
$localrules
) or
die
"FATAL: failed to create $localrules\n"
;
open
(OUT,
">$userrules"
) or
die
"FATAL: failed to create $userrules\n"
;
close
(OUT);
mkdir
(
$userstate
) or
die
"FATAL: failed to create $userstate\n"
;
}
1;