summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPhil Pennock <pdp@exim.org>2011-10-09 20:34:40 -0400
committerPhil Pennock <pdp@exim.org>2011-10-09 20:34:40 -0400
commit5f122889caaa3746001f7e1f8e5caca6f6181393 (patch)
tree5899a76f41a134b43c96cb26898ddc03fb39a214 /test
parentb5eb014fe1c11eb3608d14a21181f245161416ae (diff)
Make runtest more resilient to setup problems
Diffstat (limited to 'test')
-rwxr-xr-xtest/runtest26
1 files changed, 23 insertions, 3 deletions
diff --git a/test/runtest b/test/runtest
index 0cc7b05fe..4f1d18edb 100755
--- a/test/runtest
+++ b/test/runtest
@@ -2032,7 +2032,13 @@ if ($parm_exim eq "")
# Find what is in the binary #
##################################################
-open(EXIMINFO, "$parm_exim -C $parm_cwd/confs/0000 -DDIR=$parm_cwd " .
+# deal with TRUSTED_CONFIG_LIST restrictions
+unlink("$parm_cwd/test-config") if -e "$parm_cwd/test-config";
+symlink("$parm_cwd/confs/0000", "$parm_cwd/test-config")
+ or die "Unable to link initial config into place: $!\n";
+
+print("Probing with config file: $parm_cwd/test-config\n");
+open(EXIMINFO, "$parm_exim -d -C $parm_cwd/test-config -DDIR=$parm_cwd " .
"-bP exim_user exim_group|") ||
die "** Cannot run $parm_exim: $!\n";
while(<EXIMINFO>)
@@ -2047,6 +2053,13 @@ if (defined $parm_eximuser)
if ($parm_eximuser =~ /^\d+$/) { $parm_exim_uid = $parm_eximuser; }
else { $parm_exim_uid = getpwnam($parm_eximuser); }
}
+else
+ {
+ print "Unable to extract exim_user from binary.\n";
+ print "Check if Exim refused to run; if so, consider:\n";
+ print " TRUSTED_CONFIG_LIST ALT_CONFIG_PREFIX WHITELIST_D_MACROS\n";
+ die "Failing to get information from binary.\n";
+ }
if (defined $parm_eximgroup)
{
@@ -2054,7 +2067,7 @@ if (defined $parm_eximgroup)
else { $parm_exim_gid = getgrnam($parm_eximgroup); }
}
-open(EXIMINFO, "$parm_exim -bV -C $parm_cwd/confs/0000 -DDIR=$parm_cwd |") ||
+open(EXIMINFO, "$parm_exim -bV -C $parm_cwd/test-config -DDIR=$parm_cwd |") ||
die "** Cannot run $parm_exim: $!\n";
print "-" x 78, "\n";
@@ -2131,6 +2144,7 @@ while (<EXIMINFO>)
close(EXIMINFO);
print "-" x 78, "\n";
+unlink("$parm_cwd/test-config");
##################################################
# Check for SpamAssassin and ClamAV #
@@ -2412,6 +2426,12 @@ $parm_caller_group = getgrgid($parm_caller_gid);
print "Program caller is $parm_caller, whose group is $parm_caller_group\n";
print "Home directory is $parm_caller_home\n";
+unless (defined $parm_eximgroup)
+ {
+ print "Unable to derive \$parm_eximgroup.\n";
+ die "** ABANDONING.\n";
+ }
+
print "You need to be in the Exim group to run these tests. Checking ...";
if (`groups` =~ /\b\Q$parm_eximgroup\E\b/)
@@ -3229,4 +3249,4 @@ tests_exit(-1, "No runnable tests selected") if @test_list == 0;
tests_exit(0);
# End of runtest script
-
+# vim: set sw=2 :