blob: a2b057d3f96f302c96214fe4e687f736c7f05520 [file] [log] [blame]
#!/usr/bin/perl
#
# These types of tests will always be enabled in the "xt" test suite.
my @enable_in_xt_test_suite = qw(
run_root_tests
run_long_tests
run_spamd_prefork_stress_test
run_net_tests
run_dcc_tests
);
my $template_redir = q{
#!/usr/bin/perl
(-d "../t") and chdir "..";
system(<<SUDO>> "$^X", "<<ORIG_SCRIPT>>",
"--override", "<<CONDITION>>", "1", @ARGV);
($? >> 8 == 0) or die "exec failed";
<<SUDO_CLEANUP>>
};
use File::Basename;
my %enable_in_xt_test_suite;
foreach my $c (@enable_in_xt_test_suite) { $enable_in_xt_test_suite{$c}++; }
foreach my $f (<t/*.t>) {
open IN, "<$f" or warn "cannot open $f";
while (<IN>) {
/conf_bool\s*\(\s*['"](\S+)['"]\s*\)/ or next;
my $condition = $1;
if (!$enable_in_xt_test_suite{$condition}) {
print "$f: ignored, '$condition'\n";
next;
}
$new = basename $f;
my $new = "xt/50_$new";
my $sudo = '';
my $sudo_cleanup = '';
if ($condition eq 'run_root_tests') {
my @x = getpwuid($<); my $username = $x[0];
$sudo = '"sudo", ';
$sudo_cleanup = "system('sudo chown -R $username t/log');";
}
open (REDIR, ">$new") or die "cannot write to $new";
my $redir = $template_redir;
$redir =~ s/<<ORIG_SCRIPT>>/$f/gs;
$redir =~ s/<<CONDITION>>/$condition/gs;
$redir =~ s/<<SUDO>>/$sudo/gs;
$redir =~ s/<<SUDO_CLEANUP>>/$sudo_cleanup/gs;
print REDIR $redir;
close REDIR or die "cannot write to $new";
# print "$f: added as $new\n";
chmod 0755, $new or die "chmod $new failed";
}
close IN;
}