Update copyright dates
[exim.git] / test / runtest
index f626cb4ee16c6793c46d5fbc195b6adf4e31b3b2..29ea66a9fd1a9814c4c4544bdcc7197533b1916f 100755 (executable)
@@ -2,6 +2,9 @@
 # We use env, because in some environments of our build farm
 # the Perl 5.010 interpreter is only reachable via $PATH
 
 # We use env, because in some environments of our build farm
 # the Perl 5.010 interpreter is only reachable via $PATH
 
+# Copyright (c) The Exim Maintainers 2024
+# SPDX-License-Identifier: GPL-2.0-or-later
+
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
 # be possible to export this suite for running on a wide variety of hosts, in #
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
 # be possible to export this suite for running on a wide variety of hosts, in #
@@ -120,7 +123,7 @@ my $parm_hostname;
 my $re_ipv4 = qr/\d{1,3}(?:\.\d{1,3}){3}/;
 my $re_6g = qr/[[:xdigit:]]{1,4}/;
 my $re_6s = qr/${re_6g}:/;
 my $re_ipv4 = qr/\d{1,3}(?:\.\d{1,3}){3}/;
 my $re_6g = qr/[[:xdigit:]]{1,4}/;
 my $re_6s = qr/${re_6g}:/;
-my $re_ipv6 = qr/(?:${re_6s}){,7}${re_6g}(?:::(?:${re_6s}){,5}${re_6g})?/;
+my $re_ipv6 = qr/${re_6s}{0,7}${re_6g}(?:::${re_6s}{0,5}${re_6g})?/;
 my $re_ip = qr/(?:${re_ipv4}|${re_ipv6})/;
 
 ###############################################################################
 my $re_ip = qr/(?:${re_ipv4}|${re_ipv6})/;
 
 ###############################################################################
@@ -1132,9 +1135,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # because they will be different in different binaries.
 
     next if /^$time_pid?
     # because they will be different in different binaries.
 
     next if /^$time_pid?
-               (?: Berkeley\ DB:\s
-                 | Probably\ (?:Berkeley\ DB|ndbm|GDBM)
-                 | Using\ tdb
+               (?: .*\sBerkeley\ DB
+                 | \sProbably\ (?:Berkeley\ DB|ndbm|GDBM)
+                 | \sUsing\ (?:tdb|sqlite3)
                  | Authenticators:
                  | Lookups(?:\(built-in\))?:
                  | Support\ for:
                  | Authenticators:
                  | Lookups(?:\(built-in\))?:
                  | Support\ for:
@@ -1281,6 +1284,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # We invoke Exim with -D, so we hit this new message as of Exim 4.73:
     next if /^macros_trusted overridden to true by whitelisting/;
 
     # We invoke Exim with -D, so we hit this new message as of Exim 4.73:
     next if /^macros_trusted overridden to true by whitelisting/;
 
+    # Hints-db writes seem to have variable sizes for values
+    s/ dbfn_write: key=.+ datalen \K\d+$/NNN/;
+
     # We have to omit the localhost ::1 address so that all is well in
     # the IPv4-only case.
 
     # We have to omit the localhost ::1 address so that all is well in
     # the IPv4-only case.
 
@@ -1430,6 +1436,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # DISABLE_OCSP
     next if /in hosts_requ(est|ire)_ocsp\? (no|yes)/;
 
     # DISABLE_OCSP
     next if /in hosts_requ(est|ire)_ocsp\? (no|yes)/;
 
+    # WELLKNOWN
+    next if / in wellknown_advertise_hosts\?/;
+
     # SUPPORT_PROXY
     next if /host in hosts_proxy\?/;
 
     # SUPPORT_PROXY
     next if /host in hosts_proxy\?/;
 
@@ -1458,7 +1467,10 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if / in limits_advertise_hosts?\? no \(matched "!\*"\)/;
 
     # Experimental_XCLIENT
     next if / in limits_advertise_hosts?\? no \(matched "!\*"\)/;
 
     # Experimental_XCLIENT
-    next if / in hosts_xclient?\? no \(option unset\)/;
+    next if / in hosts_xclient\? no \(option unset\)/;
+
+    # Experimental_WELLKNOWN
+    next if / in hosts_wellknown\? no \(option unset\)/;
 
     # TCP Fast Open
     next if /^(ppppp )?setsockopt FASTOPEN: Network Error/;
 
     # TCP Fast Open
     next if /^(ppppp )?setsockopt FASTOPEN: Network Error/;
@@ -3362,7 +3374,7 @@ if (defined $parm_lookups{redis})
 
 sub check_running_dovecot
 {
 
 sub check_running_dovecot
 {
-system('dovecot --version >/dev/null');
+system('dovecot --version >/dev/null 2>&1');
 if ($? == 0)
   {
   print "Dovecot appears to be available\n";
 if ($? == 0)
   {
   print "Dovecot appears to be available\n";
@@ -3663,7 +3675,7 @@ while (<EXIMINFO>)
     }
 
   elsif (/^Support for: (.*)/)
     }
 
   elsif (/^Support for: (.*)/)
-    {
+    {                  # Compile-time features - exim -bV
     print;
     @temp = split /(\s+)/, $1;
     push(@temp, ' ');
     print;
     @temp = split /(\s+)/, $1;
     push(@temp, ' ');
@@ -4230,7 +4242,7 @@ DIR: for (my $i = 0; $i < @test_dirs; $i++)
         if (!defined $parm_malware{$1}) { $wantthis = 0; last; }
         }
       elsif (/^(not )?feature (.*)$/)
         if (!defined $parm_malware{$1}) { $wantthis = 0; last; }
         }
       elsif (/^(not )?feature (.*)$/)
-        {
+        {                      #a macro name, or lack thereof - -bP macros
        # move to a subroutine?
        my $eximinfo = "$parm_exim -C $parm_cwd/test-config -DDIR=$parm_cwd -bP macro $2";
 
        # move to a subroutine?
        my $eximinfo = "$parm_exim -C $parm_cwd/test-config -DDIR=$parm_cwd -bP macro $2";