#! /usr/bin/perl -w
-# $Cambridge: exim/test/runtest,v 1.36 2010/06/05 02:25:16 jetmore Exp $
+# $Cambridge: exim/test/runtest,v 1.37 2010/06/14 20:30:12 jetmore Exp $
###############################################################################
# This is the controlling script for the "new" test suite for Exim. It should #
while(<IN>)
{
+RESET_AFTER_EXTRA_LINE_READ:
# Check for "*** truncated ***"
$yield = 1 if /\*\*\* truncated \*\*\*/;
next if /OpenSSL compile-time version: OpenSSL \d+[\.\da-z]+/;
next if /OpenSSL runtime version: OpenSSL \d+[\.\da-z]+/;
+ # drop lookups
+ next if /^Lookups \(built-in\):/;
+ next if /^Total \d+ lookups/;
+
+ # drop compiler information
+ next if /^Compiler:/;
+
+ # and the ugly bit
+ # different libraries will have different numbers (possibly 0) of follow-up
+ # lines, indenting with more data
+ if (/^Library version:/) {
+ while (1) {
+ $_ = <IN>;
+ next if /^\s/;
+ goto RESET_AFTER_EXTRA_LINE_READ;
+ }
+ }
+
+ # drop other build-time controls emitted for debugging
+ next if /^WHITELIST_D_MACROS:/;
+ next if /^TRUSTED_CONFIG_LIST:/;
+
+ # As of Exim 4.74, we log when a setgid fails; because we invoke Exim
+ # with -be, privileges will have been dropped, so this will always
+ # be the case
+ next if /^changing group to \d+ failed: Operation not permitted/;
+
+ # We invoke Exim with -D, so we hit this new messag as of Exim 4.73:
+ next if /^macros_trusted overridden to true by whitelisting/;
+
# We have to omit the localhost ::1 address so that all is well in
# the IPv4-only case.
# Find what is in the binary #
##################################################
-open(EXIMINFO, "$parm_exim -C confs/0000 -DDIR=$parm_cwd " .
+open(EXIMINFO, "$parm_exim -C $parm_cwd/confs/0000 -DDIR=$parm_cwd " .
"-bP exim_user exim_group|") ||
die "** Cannot run $parm_exim: $!\n";
while(<EXIMINFO>)
else { $parm_exim_gid = getgrnam($parm_eximgroup); }
}
-open(EXIMINFO, "$parm_exim -bV -C confs/0000 -DDIR=$parm_cwd |") ||
+open(EXIMINFO, "$parm_exim -bV -C $parm_cwd/confs/0000 -DDIR=$parm_cwd |") ||
die "** Cannot run $parm_exim: $!\n";
print "-" x 78, "\n";
elsif (/^Size of off_t: (\d+)/)
{
+ print;
$have_largefiles = 1 if $1 > 4;
+ die "** Size of off_t > 32 which seems improbable, not running tests\n"
+ if ($1 > 32);
}
elsif (/^Support for: (.*)/)
%parm_support = @temp;
}
- elsif (/^Lookups: (.*)/)
+ elsif (/^Lookups \(built-in\): (.*)/)
{
print;
@temp = split /(\s+)/, $1;
print "Exim user is $parm_eximuser ($parm_exim_uid)\n";
print "Exim group is $parm_eximgroup ($parm_exim_gid)\n";
+
+if ($parm_caller_uid eq $parm_exim_uid) {
+ tests_exit(-1, "Exim user ($parm_eximuser,$parm_exim_uid) cannot be "
+ ."the same as caller ($parm_caller,$parm_caller_uid)");
+}
+
print "The Exim user needs access to the test suite directory. Checking ...";
if (($rc = system("sudo bin/checkaccess $parm_cwd/eximdir/exim $parm_eximuser $parm_eximgroup")) != 0)