Avoid clearing first_delivery flag on the initial half of a 2-phase queue run
[users/heiko/exim.git] / test / runtest
index 8a1e46edd75d3cc8115397557922db7c66aa9bdf..229581005d91d7bcbbad0e0aba079d366786ff65 100755 (executable)
@@ -461,8 +461,8 @@ RESET_AFTER_EXTRA_LINE_READ:
     my($date1,$date2,$date3,$expired) = ($1,$2,$3,$4);
     $expired = '' if !defined $expired;
 
     my($date1,$date2,$date3,$expired) = ($1,$2,$3,$4);
     $expired = '' if !defined $expired;
 
-    # Round the time-difference down to nearest even value
-    my($increment) = ((date_seconds($date3) - date_seconds($date2)) >> 1) << 1;
+    # Round the time-difference up to nearest even value
+    my($increment) = ((date_seconds($date3) - date_seconds($date2) + 1) >> 1) << 1;
 
     # We used to use globally unique replacement values, but timing
     # differences make this impossible. Just show the increment on the
 
     # We used to use globally unique replacement values, but timing
     # differences make this impossible. Just show the increment on the
@@ -738,11 +738,10 @@ RESET_AFTER_EXTRA_LINE_READ:
 
   s/\bgid=\d+/gid=gggg/;
   s/\begid=\d+/egid=gggg/;
 
   s/\bgid=\d+/gid=gggg/;
   s/\begid=\d+/egid=gggg/;
-  s/\b(pid=|PID: )\d+/$1pppp/;
+  s/\b(pid=|pid |PID: )\d+/$1pppp/;
   s/\buid=\d+/uid=uuuu/;
   s/\beuid=\d+/euid=uuuu/;
   s/set_process_info:\s+\d+/set_process_info: pppp/;
   s/\buid=\d+/uid=uuuu/;
   s/\beuid=\d+/euid=uuuu/;
   s/set_process_info:\s+\d+/set_process_info: pppp/;
-  s/queue run pid \d+/queue run pid ppppp/;
   s/process \d+ running as transport filter/process pppp running as transport filter/;
   s/process \d+ writing to transport filter/process pppp writing to transport filter/;
   s/reading pipe for subprocess \d+/reading pipe for subprocess pppp/;
   s/process \d+ running as transport filter/process pppp running as transport filter/;
   s/process \d+ writing to transport filter/process pppp writing to transport filter/;
   s/reading pipe for subprocess \d+/reading pipe for subprocess pppp/;
@@ -780,7 +779,7 @@ RESET_AFTER_EXTRA_LINE_READ:
 
   # This handles "connection from" and the like, when the port is given
   if (!/listening for SMTP on/ && !/Connecting to/ && !/=>/ && !/->/
 
   # This handles "connection from" and the like, when the port is given
   if (!/listening for SMTP on/ && !/Connecting to/ && !/=>/ && !/->/
-      && !/\*>/ && !/Connection refused/)
+      && !/\*>/&& !/==/  && !/\*\*/ && !/Connection refused/ && !/in response to/)
     {
     s/\[([a-z\d:]+|\d+(?:\.\d+){3})\]:(\d+)/"[".$1."]:".new_value($2,"%s",\$next_port)/ie;
     }
     {
     s/\[([a-z\d:]+|\d+(?:\.\d+){3})\]:(\d+)/"[".$1."]:".new_value($2,"%s",\$next_port)/ie;
     }
@@ -1069,15 +1068,17 @@ RESET_AFTER_EXTRA_LINE_READ:
 
     # this is timing-dependent
     next if /^OpenSSL: creating STEK$/;
 
     # this is timing-dependent
     next if /^OpenSSL: creating STEK$/;
+    next if /^selfsign cert rotate$/;
 
     # TLS preload
     # only OpenSSL speaks of these
 
     # TLS preload
     # only OpenSSL speaks of these
-    next if /^TLS: preloading DH params for server/;
+    next if /^TLS: (preloading (DH params|ECDH curve|CA bundle) for server|generating selfsigned server cert)/;
     next if /^Diffie-Hellman initialized from default/;
     next if /^Diffie-Hellman initialized from default/;
-    next if /^TLS: preloading ECDH curve for server/;
-    next if /^ECDH OpenSSL [< ]?[\d.+]+ temp key parameter settings:/;
-    next if /^ECDH: .'*prime256v1'/;
-    next if /^watch dir/;
+    next if /^ECDH OpenSSL (< )?[\d.+]+: temp key parameter settings:/;
+    next if /^ECDH: .*'prime256v1'/;
+    next if /^tls_verify_certificates: system$/;
+    next if /^tls_set_watch: .*\/cert.pem/;
+    next if /^Generating 2048 bit RSA key/;
 
     # TLS preload
     # only GnuTLS speaks of these
 
     # TLS preload
     # only GnuTLS speaks of these
@@ -1086,9 +1087,17 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /^TLS: preloading cipher list for server: NULL$/;
     s/^GnuTLS using default session cipher\/priority "NORMAL"$/TLS: not preloading cipher list for server/;
     next if /^GnuTLS<2>: added \d+ protocols, \d+ ciphersuites, \d+ sig algos and \d+ groups into priority list$/;
     next if /^TLS: preloading cipher list for server: NULL$/;
     s/^GnuTLS using default session cipher\/priority "NORMAL"$/TLS: not preloading cipher list for server/;
     next if /^GnuTLS<2>: added \d+ protocols, \d+ ciphersuites, \d+ sig algos and \d+ groups into priority list$/;
+    next if /^GnuTLS<2>: (Disabling X.509 extensions|signing structure using RSA-SHA256)/;
+    next if /^GnuTLS.*(wrap_nettle_mpi_print|gnutls_subject_alt_names_get|get_alt_name)/;
+
+    # only kevent platforms (FreeBSD, OpenBSD) say this
+    next if /^watch dir/;
+    next if /^watch file .*\/usr\/local/;
+    next if /^watch file .*\/etc\/ssl/;
 
     # TLS preload
     # there happen in different orders for OpenSSL/GnuTLS/noTLS
 
     # TLS preload
     # there happen in different orders for OpenSSL/GnuTLS/noTLS
+    next if /^TLS: generating selfsigned server cert/;
     next if /^TLS: not preloading (CA bundle|cipher list) for server$/;
     next if /^TLS: not preloading server certs$/;
 
     next if /^TLS: not preloading (CA bundle|cipher list) for server$/;
     next if /^TLS: not preloading server certs$/;
 
@@ -1143,6 +1152,8 @@ RESET_AFTER_EXTRA_LINE_READ:
     # drop pdkim debugging header
     next if /^DKIM( <<<<<<<<<<<<<<<<<<<<<<<<<<<<<+|: no signatures)$/;
 
     # drop pdkim debugging header
     next if /^DKIM( <<<<<<<<<<<<<<<<<<<<<<<<<<<<<+|: no signatures)$/;
 
+    # Some platforms have TIOCOUTome do not
+    next if /\d+ bytes remain in socket output buffer$/;
     # Various other IPv6 lines must be omitted too
 
     next if /using host_fake_gethostbyname for \S+ \(IPv6\)/;
     # Various other IPv6 lines must be omitted too
 
     next if /using host_fake_gethostbyname for \S+ \(IPv6\)/;
@@ -1279,7 +1290,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /\w+ in keep_environment\? (yes|no)/;
 
     # Sizes vary with test hostname
     next if /\w+ in keep_environment\? (yes|no)/;
 
     # Sizes vary with test hostname
-    s/^cmd buf flush \d+ bytes$/cmd buf flush ddd bytes/;
+    s/^cmd buf flush \d+ bytes/cmd buf flush ddd bytes/;
 
     # Spool filesystem free space changes on different systems.
     s/^((?:spool|log) directory space =) -?\d+K (inodes =)\s*-?\d+/$1 nnnnnK $2 nnnnn/;
 
     # Spool filesystem free space changes on different systems.
     s/^((?:spool|log) directory space =) -?\d+K (inodes =)\s*-?\d+/$1 nnnnnK $2 nnnnn/;
@@ -1479,6 +1490,11 @@ RESET_AFTER_EXTRA_LINE_READ:
 
     # Platform differences in errno strings
     s/Arg list too long/Argument list too long/;
 
     # Platform differences in errno strings
     s/Arg list too long/Argument list too long/;
+
+    # OpenSSL vs. GnuTLS
+    s/session: \K\((SSL_connect|gnutls_handshake)\): timed out/(tls lib connect fn): timed out/;
+    s/TLS error on connection from .*\K\((SSL_accept|gnutls_handshake)\): timed out/(tls lib accept fn): timed out/;
+    s/TLS error on connection from .*\K(SSL_accept: TCP connection closed by peer|\(gnutls_handshake\): The TLS connection was non-properly terminated.)/(tls lib accept fn): TCP connection closed by peer/;
     }
 
   # ======== mail ========
     }
 
   # ======== mail ========
@@ -3033,7 +3049,7 @@ my $eximinfo = "$parm_exim -d -C $parm_cwd/test-config -DDIR=$parm_cwd -bP exim_
 chomp(my @eximinfo = `$eximinfo 2>&1`);
 die "$0: Can't run $eximinfo\n" if $? == -1;
 
 chomp(my @eximinfo = `$eximinfo 2>&1`);
 die "$0: Can't run $eximinfo\n" if $? == -1;
 
-warn 'Got ' . $?>>8 . " from $eximinfo\n" if $?;
+warn 'Got ' . ($?>>8) . " from $eximinfo\n" if $?;
 foreach (@eximinfo)
   {
   if (my ($version) = /^Exim version (\S+)/) {
 foreach (@eximinfo)
   {
   if (my ($version) = /^Exim version (\S+)/) {
@@ -3102,7 +3118,7 @@ if (defined $parm_trusted_config_list)
   open(TCL, $parm_trusted_config_list) or die "Can't open $parm_trusted_config_list: $!\n";
   my $test_config = getcwd() . '/test-config';
   die "Can't find '$test_config' in TRUSTED_CONFIG_LIST $parm_trusted_config_list."
   open(TCL, $parm_trusted_config_list) or die "Can't open $parm_trusted_config_list: $!\n";
   my $test_config = getcwd() . '/test-config';
   die "Can't find '$test_config' in TRUSTED_CONFIG_LIST $parm_trusted_config_list."
-  if not grep { /^\Q$test_config\E$/ } <TCL>;
+    if not grep { /^\Q$test_config\E$/ } <TCL>;
   }
 else
   {
   }
 else
   {