git://git.exim.org
/
users
/
heiko
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Testsuite: Support running exim under valgrind
[users/heiko/exim.git]
/
test
/
runtest
diff --git
a/test/runtest
b/test/runtest
index 97a32cb7ff4f2fb37fd9df3b073ee96d0460dc96..8dcb0587cd0619fc33232b28e039cecdc7e3bd62 100755
(executable)
--- a/
test/runtest
+++ b/
test/runtest
@@
-38,6
+38,7
@@
$gnutls_dh_bits_normal = 2236;
$cf = "bin/cf -exact";
$cr = "\r";
$debug = 0;
$cf = "bin/cf -exact";
$cr = "\r";
$debug = 0;
+$flavour = 'FOO';
$force_continue = 0;
$force_update = 0;
$log_failed_filename = "failed-summary.log";
$force_continue = 0;
$force_update = 0;
$log_failed_filename = "failed-summary.log";
@@
-45,7
+46,7
@@
$more = "less -XF";
$optargs = "";
$save_output = 0;
$server_opts = "";
$optargs = "";
$save_output = 0;
$server_opts = "";
-$
flavour = 'FOO'
;
+$
valgrind = 0
;
$have_ipv4 = 1;
$have_ipv6 = 1;
$have_ipv4 = 1;
$have_ipv6 = 1;
@@
-771,6
+772,7
@@
RESET_AFTER_EXTRA_LINE_READ:
# different wording in the error messages, so we cannot compare them.
s/(TLS error on connection (?:from .* )?\(SSL_\w+\): error:)(.*)/$1 <<detail omitted>>/;
# different wording in the error messages, so we cannot compare them.
s/(TLS error on connection (?:from .* )?\(SSL_\w+\): error:)(.*)/$1 <<detail omitted>>/;
+ next if /SSL verify error: depth=0 error=certificate not trusted/;
# ======== Maildir things ========
# timestamp output in maildir processing
# ======== Maildir things ========
# timestamp output in maildir processing
@@
-857,6
+859,11
@@
RESET_AFTER_EXTRA_LINE_READ:
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/;
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/;
+ next if /SSL verify error: depth=0 error=certificate not trusted/;
+ s/SSL3_READ_BYTES/ssl3_read_bytes/;
+
+ # gnutls version variances
+ next if /^Error in the pull function./;
}
# ======== stderr ========
}
# ======== stderr ========
@@
-1387,9
+1394,23
@@
$munges =
{ 'mail' => '/^(X-(Remote-MTA-(smtp-greeting|helo-response)|Exim-Diagnostic|(body|message)-linecount):|Remote-MTA: X-ip;)/'
},
{ 'mail' => '/^(X-(Remote-MTA-(smtp-greeting|helo-response)|Exim-Diagnostic|(body|message)-linecount):|Remote-MTA: X-ip;)/'
},
+ 'optional_config' =>
+ { 'stdout' => '/^(
+ dkim_(canon|domain|private_key|selector|sign_headers|strict)
+ |gnutls_require_(kx|mac|protocols)
+ |hosts_(requ(est|ire)|try)_(dane|ocsp)
+ |hosts_(avoid|nopass|require|verify_avoid)_tls
+ |socks_proxy
+ |tls_[^ ]*
+ )($|[ ]=)/x' },
+
'sys_bindir' =>
{ 'mainlog' => 's%/(usr/)?bin/%SYSBINDIR/%' },
'sys_bindir' =>
{ 'mainlog' => 's%/(usr/)?bin/%SYSBINDIR/%' },
+ 'sync_check_data' =>
+ { 'mainlog' => 's/^(.* SMTP protocol synchronization error .* next input=.{8}).*$/$1<suppressed>/',
+ 'rejectlog' => 's/^(.* SMTP protocol synchronization error .* next input=.{8}).*$/$1<suppressed>/'},
+
};
};
@@
-2129,7
+2150,10
@@
elsif (/^([A-Z_]+=\S+\s+)?(\d+)?\s*(sudo(?:\s+-u\s+(\w+))?\s+)?exim(_\S+)?\s+(.*
$args =~ s/(?:^|\s)-d\S*// if $optargs =~ /(?:^|\s)-d/;
$args =~ s/(?:^|\s)-d\S*// if $optargs =~ /(?:^|\s)-d/;
- $cmd = "$envset$sudo$parm_cwd/eximdir/exim$special$optargs " .
+ my $opt_valgrind = $valgrind ? "valgrind --leak-check=yes --suppressions=$parm_cwd/aux-fixed/valgrind.supp " : "";
+
+ $cmd = "$envset$sudo$opt_valgrind" .
+ "$parm_cwd/eximdir/exim$special$optargs " .
"-DEXIM_PATH=$parm_cwd/eximdir/exim$special " .
"-C $parm_cwd/test-config $args " .
">>test-stdout 2>>test-stderr";
"-DEXIM_PATH=$parm_cwd/eximdir/exim$special " .
"-C $parm_cwd/test-config $args " .
">>test-stdout 2>>test-stderr";
@@
-2384,6
+2408,7
@@
while (@ARGV > 0 && $ARGV[0] =~ /^-/)
if ($arg eq "-NOIPV4") { $have_ipv4 = 0; next; }
if ($arg eq "-NOIPV6") { $have_ipv6 = 0; next; }
if ($arg eq "-KEEP") { $save_output = 1; next; }
if ($arg eq "-NOIPV4") { $have_ipv4 = 0; next; }
if ($arg eq "-NOIPV6") { $have_ipv6 = 0; next; }
if ($arg eq "-KEEP") { $save_output = 1; next; }
+ if ($arg eq "-VALGRIND") { $valgrind = 1; next; }
if ($arg =~ /^-FLAVOU?R$/) { $flavour = shift; next; }
}
$optargs .= " $arg";
if ($arg =~ /^-FLAVOU?R$/) { $flavour = shift; next; }
}
$optargs .= " $arg";
@@
-2571,7
+2596,7
@@
else
die "Unable to check the TRUSTED_CONFIG_LIST, seems to be empty?\n";
}
die "Unable to check the TRUSTED_CONFIG_LIST, seems to be empty?\n";
}
-open(EXIMINFO, "$parm_exim -bV -C $parm_cwd/test-config -DDIR=$parm_cwd |") ||
+open(EXIMINFO, "$parm_exim -
d-all+transport -
bV -C $parm_cwd/test-config -DDIR=$parm_cwd |") ||
die "** Cannot run $parm_exim: $!\n";
print "-" x 78, "\n";
die "** Cannot run $parm_exim: $!\n";
print "-" x 78, "\n";
@@
-2580,7
+2605,7
@@
while (<EXIMINFO>)
{
my(@temp);
{
my(@temp);
- if (/^
Exim
version/) { print; }
+ if (/^
(Exim|Library)
version/) { print; }
elsif (/^Size of off_t: (\d+)/)
{
elsif (/^Size of off_t: (\d+)/)
{
@@
-2852,7
+2877,7
@@
if (defined $parm_support{'Content_Scanning'})
##################################################
# Check for redis #
##################################################
##################################################
# Check for redis #
##################################################
-if (defined $parm_
support{'Experimental_R
edis'})
+if (defined $parm_
lookups{'r
edis'})
{
if (system("redis-server -v 2>/dev/null >/dev/null") == 0)
{
{
if (system("redis-server -v 2>/dev/null >/dev/null") == 0)
{
@@
-3199,6
+3224,11
@@
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)");
}
tests_exit(-1, "Exim user ($parm_eximuser,$parm_exim_uid) cannot be "
."the same as caller ($parm_caller,$parm_caller_uid)");
}
+if ($parm_caller_gid eq $parm_exim_gid) {
+ tests_exit(-1, "Exim group ($parm_eximgroup,$parm_exim_gid) cannot be "
+ ."the same as caller's ($parm_caller) group as it confuses "
+ ."results analysis");
+}
print "The Exim user needs access to the test suite directory. Checking ...";
print "The Exim user needs access to the test suite directory. Checking ...";
@@
-3746,7
+3776,15
@@
$0 = "[runtest $testno]";
$_ = $force_continue ? "c" : <T>;
tests_exit(1) if /^q?$/i;
log_failure($log_failed_filename, $testno, "exit code unexpected") if (/^c$/i && $force_continue);
$_ = $force_continue ? "c" : <T>;
tests_exit(1) if /^q?$/i;
log_failure($log_failed_filename, $testno, "exit code unexpected") if (/^c$/i && $force_continue);
- print "... continue forced\n" if $force_continue;
+ if ($force_continue)
+ {
+ print "\nstderr tail:\n";
+ print "===================\n";
+ system("tail -20 test-stderr");
+ print "===================\n";
+ print "... continue forced\n";
+ }
+
last if /^[rc]$/i;
if (/^e$/i)
{
last if /^[rc]$/i;
if (/^e$/i)
{