Build: linux only needs libnsl for LOOKUP_NIS
[exim.git] / test / runtest
index 7ad54e29a336d632ebc9f6eb45fcaad736f0ea11..45ee6e208b173bd609893a89f555add5d9aaadd2 100755 (executable)
@@ -772,7 +772,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     }
 
   # Port in host address in spool file output from -Mvh
     }
 
   # Port in host address in spool file output from -Mvh
-  s/^-host_address (.*)\.\d+/-host_address $1.9999/;
+  s/^(--?host_address) (.*)\.\d+/$1 $2.9999/;
 
   if ($dynamic_socket and $dynamic_socket->opened and my $port = $dynamic_socket->sockport) {
     s/^Connecting to 127\.0\.0\.1 port \K$port/<dynamic port>/;
 
   if ($dynamic_socket and $dynamic_socket->opened and my $port = $dynamic_socket->sockport) {
     s/^Connecting to 127\.0\.0\.1 port \K$port/<dynamic port>/;
@@ -1085,7 +1085,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /name=localhost address=::1/;
 
     # drop pdkim debugging header
     next if /name=localhost address=::1/;
 
     # drop pdkim debugging header
-    next if /^PDKIM( <<<<<<<<<<<<<<<<<<<<<<<<<<<<<+|: no signatures)$/;
+    next if /^DKIM( <<<<<<<<<<<<<<<<<<<<<<<<<<<<<+|: no signatures)$/;
 
     # Various other IPv6 lines must be omitted too
 
 
     # Various other IPv6 lines must be omitted too
 
@@ -1093,6 +1093,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /get\[host\|ipnode\]byname\[2\]\(af=inet6\)/;
     next if /DNS lookup of \S+ \(AAAA\) using fakens/;
     next if / in dns_ipv4_lookup?/;
     next if /get\[host\|ipnode\]byname\[2\]\(af=inet6\)/;
     next if /DNS lookup of \S+ \(AAAA\) using fakens/;
     next if / in dns_ipv4_lookup?/;
+    next if / writing neg-cache entry for .*AAAA/;
 
     if (/DNS lookup of \S+ \(AAAA\) gave NO_DATA/)
       {
 
     if (/DNS lookup of \S+ \(AAAA\) gave NO_DATA/)
       {
@@ -1157,11 +1158,17 @@ RESET_AFTER_EXTRA_LINE_READ:
     # Platform-dependent error strings
     s/Operation timed out/Connection timed out/;
 
     # Platform-dependent error strings
     s/Operation timed out/Connection timed out/;
 
+    # Platform-dependent resolver option bits
+    s/^ (?:writing|update) neg-cache entry for [^,]+-\K[0-9a-f]+, ttl/xxxx, ttl/;
+
+    # timing variance, run-to-run
+    s/^time on queue = \K1s/0s/;
+
     # 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 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;
 
-    # DISABLE_OCSP 
+    # DISABLE_OCSP
     next if /in hosts_requ(est|ire)_ocsp\? (no|yes)/;
 
     # SUPPORT_PROXY
     next if /in hosts_requ(est|ire)_ocsp\? (no|yes)/;
 
     # SUPPORT_PROXY
@@ -1201,20 +1208,24 @@ RESET_AFTER_EXTRA_LINE_READ:
       }
 
     # Not all platforms build with DKIM enabled
       }
 
     # Not all platforms build with DKIM enabled
-    next if /^PDKIM >> Body data for hash, canonicalized/;
+    next if /^DKIM >> Body data for hash, canonicalized/;
+
+    # Not all platforms build with SPF enabled
+    next if /^(spf_conn_init|SPF_dns_exim_new|spf_compile\.c)/;
 
     # Not all platforms have sendfile support
     next if /^cannot use sendfile for body: no support$/;
 
     #  Parts of DKIM-specific debug output depend on the time/date
     next if /^date:\w+,\{SP\}/;
 
     # Not all platforms have sendfile support
     next if /^cannot use sendfile for body: no support$/;
 
     #  Parts of DKIM-specific debug output depend on the time/date
     next if /^date:\w+,\{SP\}/;
-    next if /^PDKIM \[[^[]+\] (Header hash|b) computed:/;
+    next if /^DKIM \[[^[]+\] (Header hash|b) computed:/;
 
     # Not all platforms support TCP Fast Open, and the compile omits the check
     if (s/\S+ in hosts_try_fastopen\? (no \(option unset\)|yes \(matched "\*"\))\n$//)
       {
       $_ .= <IN>;
       s/ \.\.\. >>> / ... /;
 
     # Not all platforms support TCP Fast Open, and the compile omits the check
     if (s/\S+ in hosts_try_fastopen\? (no \(option unset\)|yes \(matched "\*"\))\n$//)
       {
       $_ .= <IN>;
       s/ \.\.\. >>> / ... /;
+      if (s/ non-TFO mode connection attempt to 224.0.0.0, 0 data\b$//) { $_ .= <IN>; }
       s/Address family not supported by protocol family/Network Error/;
       s/Network is unreachable/Network Error/;
       }
       s/Address family not supported by protocol family/Network Error/;
       s/Network is unreachable/Network Error/;
       }
@@ -1223,23 +1234,23 @@ RESET_AFTER_EXTRA_LINE_READ:
 
     if (/^([0-9: ]*                                            # possible timestamp
        Connecting\ to\ [^ ]+\ [^ ]+(\ from\ [^ ]+)?)\ \.\.\.
 
     if (/^([0-9: ]*                                            # possible timestamp
        Connecting\ to\ [^ ]+\ [^ ]+(\ from\ [^ ]+)?)\ \.\.\.
-       \ .*TFO\ mode\ 
+       \ .*TFO\ mode\x20
        (sendto,\ no\ data:\ EINPROGRESS                        # Linux
        |connection\ attempt\ to\ [^,]+,\ 0\ data)              # MacOS & no-support
        $/x)
       {
       $_ = $1 . " ... " . <IN>;
        (sendto,\ no\ data:\ EINPROGRESS                        # Linux
        |connection\ attempt\ to\ [^,]+,\ 0\ data)              # MacOS & no-support
        $/x)
       {
       $_ = $1 . " ... " . <IN>;
-      s/^(.* \.\.\.) [0-9: ]*connected$/$1 connected/;
+      s/^(.* \.\.\.) [0-9: ]*connected$/$1  connected/;
 
 
-      if (/^Connecting to .* \.\.\. connected$/)
+      if (/^Connecting to .* \.\.\.  connected$/)
        {
        $_ .= <IN>;
        {
        $_ .= <IN>;
-       if (/^(Connecting to .* \.\.\. )connected\n\s+SMTP(\(close\)>>|\(Connection refused\)<<)$/)
+       if (/^(Connecting to .* \.\.\.  )connected\n\s+SMTP(\(close\)>>|\(Connection refused\)<<)$/)
          {
          $_ = $1 . "failed: Connection refused\n" . <IN>;
          s/^(Connecting .*)\n\s+SMTP\(close\)>>$/$1/;
          }
          {
          $_ = $1 . "failed: Connection refused\n" . <IN>;
          s/^(Connecting .*)\n\s+SMTP\(close\)>>$/$1/;
          }
-       elsif (/^(Connecting to .* \.\.\. connected\n)read response data: size=/)
+       elsif (/^(Connecting to .* \.\.\.  connected\n)read response data: size=/)
          { $_ = $1; }
 
        # Date/time in SMTP banner
          { $_ = $1; }
 
        # Date/time in SMTP banner
@@ -3388,6 +3399,7 @@ else
 
 # Find this host's IP addresses - there may be many, of course, but we keep
 # one of each type (IPv4 and IPv6).
 
 # Find this host's IP addresses - there may be many, of course, but we keep
 # one of each type (IPv4 and IPv6).
+#XXX it would be good to avoid non-UP interfaces
 
 open(IFCONFIG, '-|', (grep { -x "$_/ip" } split /:/, $ENV{PATH}) ? 'ip address' : 'ifconfig -a')
   or die "** Cannot run 'ip address' or 'ifconfig -a'\n";
 
 open(IFCONFIG, '-|', (grep { -x "$_/ip" } split /:/, $ENV{PATH}) ? 'ip address' : 'ifconfig -a')
   or die "** Cannot run 'ip address' or 'ifconfig -a'\n";
@@ -3395,13 +3407,16 @@ while (not ($parm_ipv4 and $parm_ipv6) and defined($_ = <IFCONFIG>))
   {
   if (not $parm_ipv4 and /^\s*inet(?:\saddr)?:?\s?(\d+\.\d+\.\d+\.\d+)(?:\/\d+)?\s/i)
     {
   {
   if (not $parm_ipv4 and /^\s*inet(?:\saddr)?:?\s?(\d+\.\d+\.\d+\.\d+)(?:\/\d+)?\s/i)
     {
-    next if $1 =~ /^(?:127|10)\./;
+    # It would ne nice to be able to vary the /16 used for manyhome; we could take
+    # an option to runtest used here - but we'd also have to pass it on to fakens.
+    # Possibly an environment variable?
+    next if $1 eq '0.0.0.0' or $1 =~ /^(?:127|10\.250)\./;
     $parm_ipv4 = $1;
     }
 
   if (not $parm_ipv6 and /^\s*inet6(?:\saddr)?:?\s?([abcdef\d:]+)(?:%[^ \/]+)?(?:\/\d+)?/i)
     {
     $parm_ipv4 = $1;
     }
 
   if (not $parm_ipv6 and /^\s*inet6(?:\saddr)?:?\s?([abcdef\d:]+)(?:%[^ \/]+)?(?:\/\d+)?/i)
     {
-    next if $1 eq '::1' or $1 =~ /^fe80/i;
+    next if $1 eq '::' or $1 eq '::1' or $1 =~ /^fe80/i;
     $parm_ipv6 = $1;
     }
   }
     $parm_ipv6 = $1;
     }
   }
@@ -4224,10 +4239,22 @@ foreach $test (@test_list)
           print "==================>\n";
           system("tail -20 test-stdout");
           print "===================\n";
           print "==================>\n";
           system("tail -20 test-stdout");
           print "===================\n";
+
           print "stderr tail:\n";
           print "==================>\n";
           print "stderr tail:\n";
           print "==================>\n";
-          system("tail -20 test-stderr");
+          system("tail -30 test-stderr");
           print "===================\n";
           print "===================\n";
+
+          print "stdout-server tail:\n";
+          print "==================>\n";
+          system("tail -20 test-stdout-server");
+          print "===================\n";
+
+          print "stderr-server tail:\n";
+          print "==================>\n";
+          system("tail -30 test-stderr-server");
+          print "===================\n";
+
           print "... continue forced\n";
           }
 
           print "... continue forced\n";
           }