X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/903546d89b632736573e38f9b68c480c4d5d1593..cc5a3f43827026193110cb663151a95eac4ee379:/test/runtest diff --git a/test/runtest b/test/runtest index a6c4f0acd..22fb69fb3 100755 --- a/test/runtest +++ b/test/runtest @@ -165,7 +165,7 @@ if (exists $TEST_STATE->{exim_pid}) { $pid = $TEST_STATE->{exim_pid}; print "Tidyup: killing wait-mode daemon pid=$pid\n"; - system("sudo kill -SIGINT $pid"); + system("sudo kill -INT $pid"); } if (opendir(DIR, "spool")) @@ -179,7 +179,7 @@ if (opendir(DIR, "spool")) chomp($pid = ); close(PID); print "Tidyup: killing daemon pid=$pid\n"; - system("sudo rm -f spool/$spool; sudo kill -SIGINT $pid"); + system("sudo rm -f spool/$spool; sudo kill -INT $pid"); } } else @@ -485,7 +485,7 @@ RESET_AFTER_EXTRA_LINE_READ: s/\d\d-[A-Z][a-z]{2}-\d{4}\s\d\d:\d\d:\d\d/07-Mar-2000 12:21:52/g; # Time on queue tolerance - s/QT=1s/QT=0s/; + s/(QT|D)=1s/$1=0s/; # Eximstats heading s/Exim\sstatistics\sfrom\s\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d\sto\s @@ -497,6 +497,7 @@ RESET_AFTER_EXTRA_LINE_READ: # different protocols; can't rely upon TLS 1.2's AES256-GCM-SHA384, so we # treat the standard algorithms the same. # So far, have seen: + # TLSv1:AES128-GCM-SHA256:128 # TLSv1:AES256-SHA:256 # TLSv1.1:AES256-SHA:256 # TLSv1.2:AES256-GCM-SHA384:256 @@ -509,6 +510,8 @@ RESET_AFTER_EXTRA_LINE_READ: # (and \b doesn't match between ' ' and '(' ) s/( (?: (?:\b|\s) [\(=] ) | \s )TLSv1\.[12]:/$1TLSv1:/xg; + s/\bAES128-GCM-SHA256:128\b/AES256-SHA:256/g; + s/\bAES128-GCM-SHA256\b/AES256-SHA/g; s/\bAES256-GCM-SHA384\b/AES256-SHA/g; s/\bDHE-RSA-AES256-SHA\b/AES256-SHA/g; @@ -538,7 +541,7 @@ RESET_AFTER_EXTRA_LINE_READ: # (this new one is a generic channel-read error, but the testsuite # only hits it in one place) - s/TLS error on connection to \d{1,3}(.\d{1,3}){3} \[\d{1,3}(.\d{1,3}){3}\] \(gnutls_handshake\): Error in the pull function\./a TLS session is required for ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4], but an attempt to start TLS failed/g; + s/TLS error on connection \(gnutls_handshake\): Error in the pull function\./a TLS session is required but an attempt to start TLS failed/g; # (replace old with new, hoping that old only happens in one situation) s/TLS error on connection to \d{1,3}(.\d{1,3}){3} \[\d{1,3}(.\d{1,3}){3}\] \(gnutls_handshake\): A TLS packet with unexpected length was received./a TLS session is required for ip4.ip4.ip4.ip4 [ip4.ip4.ip4.ip4], but an attempt to start TLS failed/g; @@ -751,7 +754,7 @@ RESET_AFTER_EXTRA_LINE_READ: # numbers, or handle specific bad conditions in different ways, leading to # different wording in the error messages, so we cannot compare them. - s/(TLS error on connection (?:from|to) .*? \(SSL_\w+\): error:)(.*)/$1 <>/; + s/(TLS error on connection (?:from .* )?\(SSL_\w+\): error:)(.*)/$1 <>/; # ======== Maildir things ======== # timestamp output in maildir processing @@ -803,7 +806,7 @@ RESET_AFTER_EXTRA_LINE_READ: # ========================================================== # MIME boundaries in RFC3461 DSN messages - s/\d{8,10}-eximdsn-\d{8,10}/NNNNNNNNNN-eximdsn-MMMMMMMMMM/; + s/\d{8,10}-eximdsn-\d{7,10}/NNNNNNNNNN-eximdsn-MMMMMMMMMM/; # ========================================================== # Some munging is specific to the specific file types @@ -837,6 +840,7 @@ RESET_AFTER_EXTRA_LINE_READ: # openssl version variances next if /^SSL info: unknown state/; next if /^SSL info: SSLv2\/v3 write client hello A/; + next if /^SSL info: SSLv3 read server key exchange A/; } @@ -892,7 +896,7 @@ RESET_AFTER_EXTRA_LINE_READ: # 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/; + next if /^changing group to \d+ failed: (Operation not permitted|Not owner)/; # We might not keep this check; rather than change all the tests, just # ignore it as long as it succeeds; then we only need to change the @@ -999,6 +1003,11 @@ RESET_AFTER_EXTRA_LINE_READ: @saved = (); } + # Skip hosts_require_dane checks when the options + # are unset, because dane ain't always there. + + next if /in\shosts_require_dane\?\sno\s\(option\sunset\)/x; + # Skip some lines that Exim puts out at the start of debugging output # because they will be different in different binaries. @@ -1020,6 +1029,14 @@ RESET_AFTER_EXTRA_LINE_READ: next; } + # ======== log ======== + + elsif ($is_log) + { + # Berkeley DB version differences + next if / Berkeley DB error: /; + } + # ======== All files other than stderr ======== print MUNGED; @@ -1281,19 +1298,29 @@ return 1; # paniclog, rejectlog, mainlog, stdout, stderr, msglog, mail # Search strings starting with 's' do substitutions; # with '/' do line-skips. +# Triggered by a scriptfile line "munge " ################################################## $munges = { 'dnssec' => - { 'stderr' => '/^Reverse DNS security status: unverified\n/', }, + { 'stderr' => '/^Reverse DNS security status: unverified\n/' }, 'gnutls_unexpected' => - { 'mainlog' => '/\(recv\): A TLS packet with unexpected length was received./', }, + { 'mainlog' => '/\(recv\): A TLS packet with unexpected length was received./' }, 'gnutls_handshake' => - { 'mainlog' => 's/\(gnutls_handshake\): Error in the push function/\(gnutls_handshake\): A TLS packet with unexpected length was received/', }, + { 'mainlog' => 's/\(gnutls_handshake\): Error in the push function/\(gnutls_handshake\): A TLS packet with unexpected length was received/' }, + + 'optional_events' => + { 'stdout' => '/event_action =/' }, - 'tpda' => - { 'stdout' => '/tpda_delivery_action =/', }, + 'optional_ocsp' => + { 'stderr' => '/127.0.0.1 in hosts_requ(ire|est)_ocsp/' }, + + 'no_tpt_filter_epipe' => + { 'stderr' => '/^writing error 32: Broken pipe$/' }, + + 'optional_cert_hostnames' => + { 'stderr' => '/in tls_verify_cert_hostnames\? no/' }, }; @@ -1747,14 +1774,14 @@ if (/^killdaemon/) print ">> killdaemon: recovered pid $pid\n" if $debug; if ($pid) { - run_system("sudo /bin/kill -SIGINT $pid"); + run_system("sudo /bin/kill -INT $pid"); wait; } } else { $pid = `cat $parm_cwd/spool/exim-daemon.*`; if ($pid) { - run_system("sudo /bin/kill -SIGINT $pid"); + run_system("sudo /bin/kill -INT $pid"); close DAEMONCMD; # Waits for process } } @@ -2001,7 +2028,8 @@ elsif (/^([A-Z_]+=\S+\s+)?(\d+)?\s*(sudo\s+)?exim(_\S+)?\s+(.*)$/) for ($i = @msglist; $i > 0; $i--) { $args =~ s/\$msg$i/$msglist[$i-1]/g; } if ( $args =~ /\$msg\d/ ) { - tests_exit(-1, "Not enough messages in spool, for test $testno line $lineno\n"); + tests_exit(-1, "Not enough messages in spool, for test $testno line $lineno\n") + unless $force_continue; } } @@ -2714,7 +2742,7 @@ $pwcomm = $pwcomm; $parm_caller_group = getgrgid($parm_caller_gid); -print "Program caller is $parm_caller, whose group is $parm_caller_group\n"; +print "Program caller is $parm_caller ($parm_caller_uid), whose group is $parm_caller_group ($parm_caller_gid)\n"; print "Home directory is $parm_caller_home\n"; unless (defined $parm_eximgroup) @@ -2752,7 +2780,7 @@ while (($parm_ipv4 eq "" || $parm_ipv6 eq "") && ($_ = )) $_ =~ /^\s*inet(?:\saddr)?:?\s?(\d+\.\d+\.\d+\.\d+)\s/i) { $ip = $1; - next if ($ip eq "127.0.0.1"); + next if ($ip =~ /^127\./); $parm_ipv4 = $ip; } @@ -3358,9 +3386,20 @@ foreach $test (@test_list) undef %expected_msglogs; # Open the test's script - open(SCRIPT, "scripts/$test") || tests_exit(-1, "Failed to open \"scripts/$test\": $!"); + # Run through the script once to set variables which should be global + while (