X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/eeeda78a3b06864a1641ce9b7260d4acdb5ee78e..ac53fcdaf9c772ee8e70ca4f14ed19b39e12eb68:/test/runtest?ds=sidebyside diff --git a/test/runtest b/test/runtest index 8a2b1d32b..0cc7b05fe 100755 --- a/test/runtest +++ b/test/runtest @@ -1,7 +1,5 @@ #! /usr/bin/perl -w -# $Cambridge: exim/test/runtest,v 1.36 2010/06/05 02:25:16 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"; @@ -2038,7 +2067,10 @@ while () 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: (.*)/) @@ -2049,7 +2081,7 @@ while () %parm_support = @temp; } - elsif (/^Lookups: (.*)/) + elsif (/^Lookups \(built-in\): (.*)/) { print; @temp = split /(\s+)/, $1; @@ -2618,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)