$date = "\\d{2}-\\w{3}-\\d{4}\\s\\d{2}:\\d{2}:\\d{2}";
+# Debug time & pid
+
+$time_pid = "(?:\\d{2}:\\d{2}:\\d{2}\\s+\\d+\\s)";
+
# Pattern for matching pids at start of stderr lines; initially something
# that won't match.
# MIME boundaries in RFC3461 DSN messages
s/\d{8,10}-eximdsn-\d+/NNNNNNNNNN-eximdsn-MMMMMMMMMM/;
+ # Cyrus SASL library version differences (rejectlog)
+ s/Cyrus SASL permanent failure: \Kuser not found$/generic failure/;
+
# ==========================================================
# Some munging is specific to the specific file types
next if /^GnuTLS<2>: Intel (AES|GCM) accelerator was detected/;
next if /^Added \d{3} certificate authorities/;
next if /^TLS: not preloading CRL for server/;
+ next if /^GnuTLS<3>: ASSERT: extensions.c\[_gnutls_get_extension/;
+ next if /^GnuTLS<3>: ASSERT: \.\.\/\.\.\/\.\.\/lib\/x509\//;
+ next if /^GnuTLS<2>: Initializing PKCS #11 modules/;
+
# only kevent platforms (FreeBSD, OpenBSD) say this
next if /^watch dir/;
next if /^TLS: not preloading server certs$/;
# drop lookups
- next if /^(?:\d\d:\d\d:\d\d\ \d+\ )?(?: Lookups\ \(built-in\):
+ next if /^$time_pid?(?: Lookups\ \(built-in\):
| Loading\ lookup\ modules\ from
| Loaded\ \d+\ lookup\ modules
| Total\ \d+\ lookups)/x;
# drop compiler information
- next if /^(?:\d\d:\d\d:\d\d \d+ )?Compiler:/;
+ next if /^$time_pid?Compiler:/;
# and the ugly bit
# different libraries will have different numbers (possibly 0) of follow-up
# lines, indenting with more data
- if (/^(?:\d\d:\d\d:\d\d \d+ )?Library version:/) {
+ if (/^$time_pid?Library version:/) {
while (1) {
$_ = <IN>;
- next if /^(?:\d\d:\d\d:\d\d \d+ )?\s/;
+ next if /^$time_pid?\s/;
goto RESET_AFTER_EXTRA_LINE_READ;
}
}
# drop other build-time controls emitted for debugging
- next if /^(?:\d\d:\d\d:\d\d \d+ )?WHITELIST_D_MACROS:/;
- next if /^(?:\d\d:\d\d:\d\d \d+ )?TRUSTED_CONFIG_LIST:/;
+ next if /^$time_pid?WHITELIST_D_MACROS:/;
+ next if /^$time_pid?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
}
# Different builds will have different lookup types included
- s/^search_type \K\d+ \((\w+)\) quoting -1 \(none\)$/NN ($1) quoting -1 (none)/;
+ s/^\s*search_type \K\d+ \((\w+)\) quoting -1 \(none\)$/NN ($1) quoting -1 (none)/;
# DISABLE_OCSP
next if /in hosts_requ(est|ire)_ocsp\? (no|yes)/;
# Time-only, in debug output
# we have to handle double lines from the DBOPEN, hence placed down here and /mg
- s/^\d\d:\d\d:\d\d\s/01:01:01 /mg;
+ s/^\d\d:\d\d:\d\d\s+/01:01:01 /mg;
# pid in debug lines
- s/^(\d\d:\d\d:\d\d)(\s\d+\s)/"$1 " . new_value($2, "%s", \$next_pid) . " "/mgxe;
+ s/^(\d\d:\d\d:\d\d)(\s+\d+\s)/"$1 " . new_value($2, "%s", \$next_pid) . " "/mgxe;
s/(?<!post-)[Pp]rocess\K(\s\d+ )/new_value($1, "%s", \$next_pid) . " "/gxe;
# When Exim is checking the size of directories for maildir, it uses
# Skip some lines that Exim puts out at the start of debugging output
# because they will be different in different binaries.
- print MUNGED
- unless (/^(?:\d\d:\d\d:\d\d\ \d+\ )?
+ next if /^$time_pid?
(?: Berkeley\ DB:\s
| Probably\ (?:Berkeley\ DB|ndbm|GDBM)
+ | Using\ tdb
| Authenticators:
| Lookups(?:\(built-in\))?:
| Support\ for:
| Configure\ owner
| Size\ of\ off_t:
)
- /x
- );
-
+ /x;
+ print MUNGED;
}
next;
foreach $mail (@mails)
{
- next if $mail eq "test-mail/oncelog";
+ next if $mail =~ /^test-mail\/oncelog(.(dir|pag|db))?$/;
$saved_mail = substr($mail, 10); # Remove "test-mail/"
$saved_mail =~ s/^$parm_caller(\/|$)/CALLER/; # Convert caller name
}
+# The "exiqgrep" command runs exiqgrep on the current spool
+
+if (/^exiqgrep(\s+.*)?/)
+ {
+ run_system("(./eximdir/exiqgrep -E ./eximdir/exim -C $parm_cwd/test-config" . ($1 || '') . ";" .
+ "echo exiqgrep exit code = \$?)" .
+ ">>test-stdout");
+ return 1;
+ }
+
+
# The "eximstats" command runs eximstats on the current mainlog
if (/^eximstats\s+(.*)/)
$dbm_build_deleted = 1;
}
-foreach my $tool (qw(exim_dumpdb exim_lock exinext exigrep eximstats)) {
+foreach my $tool (qw(exim_dumpdb exim_lock exinext exigrep eximstats exiqgrep)) {
cp("$parm_exim_dir/$tool" => "eximdir/$tool")
or tests_exit(-1, "Failed to make a copy of $tool: $!");
}
# Collect some version information
print '-' x 78, "\n";
print "Perl version for runtest: $]\n";
-foreach (map { "./eximdir/$_" } qw(exigrep exinext eximstats)) {
+foreach (map { "./eximdir/$_" } qw(exigrep exinext eximstats exiqgrep)) {
# fold (or unfold?) multiline output into a one-liner
print join(', ', map { chomp; $_ } `$_ --version`), "\n";
}