X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/e1b3d58d3359cdbb67d37cd4222ff9dcb7b7da0e..792e8a19c86fd63afdf36843dd627bb94f154e4b:/test/runtest diff --git a/test/runtest b/test/runtest index 43b35904e..0cc7b05fe 100755 --- a/test/runtest +++ b/test/runtest @@ -1,7 +1,5 @@ #! /usr/bin/perl -w -# $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 # # be possible to export this suite for running on a wide variety of hosts, in # @@ -299,6 +297,7 @@ $spid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; while() { +RESET_AFTER_EXTRA_LINE_READ: # Check for "*** truncated ***" $yield = 1 if /\*\*\* truncated \*\*\*/; @@ -737,6 +736,36 @@ while() 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) { + $_ = ; + 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. @@ -2003,7 +2032,7 @@ if ($parm_exim eq "") # 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() @@ -2025,7 +2054,7 @@ if (defined $parm_eximgroup) 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"; @@ -2052,7 +2081,7 @@ while () %parm_support = @temp; } - elsif (/^Lookups: (.*)/) + elsif (/^Lookups \(built-in\): (.*)/) { print; @temp = split /(\s+)/, $1; @@ -2621,6 +2650,12 @@ if (system("cp $parm_exim_dir/eximstats eximdir") != 0) 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)