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
\d{4}-\d\d-\d\d\s\d\d:\d\d:\d\d/Exim statistics from <time> to <time>/x;
+ # Treat ECONNRESET the same as ECONNREFUSED. At least some systems give
+ # us the former on a new connection.
+ s/(could not connect to .*: Connection) reset by peer$/$1 refused/;
# ======== TLS certificate algorithms ========
# Test machines might have various different TLS library versions supporting
# ==========================================================
# MIME boundaries in RFC3461 DSN messages
- s/\d{8,10}-eximdsn-\d{8,10}/NNNNNNNNNN-eximdsn-MMMMMMMMMM/;
+ s/\d{8,10}-eximdsn-\d+/NNNNNNNNNN-eximdsn-MMMMMMMMMM/;
# ==========================================================
# Some munging is specific to the specific file types
# 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
next;
}
+ # ======== log ========
+
+ elsif ($is_log)
+ {
+ # Berkeley DB version differences
+ next if / Berkeley DB error: /;
+ }
+
# ======== All files other than stderr ========
print MUNGED;
# paniclog, rejectlog, mainlog, stdout, stderr, msglog, mail
# Search strings starting with 's' do substitutions;
# with '/' do line-skips.
+# Triggered by a scriptfile line "munge <name>"
##################################################
$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 =/' },
+
+ 'optional_ocsp' =>
+ { 'stderr' => '/127.0.0.1 in hosts_requ(ire|est)_ocsp/' },
+
+ 'no_tpt_filter_epipe' =>
+ { 'stderr' => '/^writing error 32: Broken pipe$/' },
- 'tpda' =>
- { 'stdout' => '/tpda_event_action =/', },
+ 'optional_cert_hostnames' =>
+ { 'stderr' => '/in tls_verify_cert_hostnames\? no/' },
+
+ 'loopback' =>
+ { 'stdout' => 's/[[](127\.0\.0\.1|::1)]/[IP_LOOPBACK_ADDR]/' },
};
# [4] TRUE if this is a log file whose deliveries must be sorted
# [5] an optional custom munge command
#
-# Arguments: Optionally, name of a custom munge to run.
+# Arguments: Optionally, name of a single custom munge to run.
# Returns: 0 if the output compared equal
# 1 if re-run needed (files may have been updated)
my(@temp);
print ">> ./eximdir/exim_dumpdb $parm_cwd/spool $which\n" if $debug;
open(IN, "./eximdir/exim_dumpdb $parm_cwd/spool $which |");
- @temp = <IN>;
- close(IN);
- if ($which eq "callout")
+ open(OUT, ">>test-stdout");
+ print OUT "+++++++++++++++++++++++++++\n";
+
+ if ($which eq "retry")
{
+ $/ = "\n ";
+ @temp = <IN>;
+ $/ = "\n";
+
@temp = sort {
- my($aa) = substr $a, 21;
- my($bb) = substr $b, 21;
- return $aa cmp $bb;
+ my($aa) = split(' ', $a);
+ my($bb) = split(' ', $b);
+ return $aa cmp $bb;
} @temp;
+
+ foreach $item (@temp)
+ {
+ $item =~ s/^\s*(.*)\n(.*)\n?\s*$/$1\n$2/m;
+ print OUT " $item\n";
+ }
}
- open(OUT, ">>test-stdout");
- print OUT "+++++++++++++++++++++++++++\n";
- print OUT @temp;
+ else
+ {
+ @temp = <IN>;
+ if ($which eq "callout")
+ {
+ @temp = sort {
+ my($aa) = substr $a, 21;
+ my($bb) = substr $b, 21;
+ return $aa cmp $bb;
+ } @temp;
+ }
+ print OUT @temp;
+ }
+
+ close(IN);
close(OUT);
return 1;
}
$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)
$stdout_skip = 0;
$rmfiltertest = 0;
$is_ipv6test = 0;
+ $TEST_STATE->{munge} = "";
# Remove the associative arrays used to hold checked mail files and msglogs