Split out hintsdb backend shims to separate files
[exim.git] / test / runtest
index 683dee2d1678d9fe47fea713f5a9e1ec25b343a3..7a642fc2014cd2c505250c0edae90812cb0d44a3 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
 
+# 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 #
@@ -572,10 +575,10 @@ RESET_AFTER_EXTRA_LINE_READ:
   s/\d\d-\w\w\w-\d\d\d\d\s\d\d:\d\d:\d\d\s[-+]\d\d\d\d,/06-Sep-1999 15:52:48 +0100,/gx;
 
   # Dates/times in debugging output for writing retry records
-  if (/^  first failed=(\d+) last try=(\d+) next try=(\d+) (.*)$/)
+  if (/^(\s+)first failed=(\d+) last try=(\d+) next try=(\d+) (.*)$/)
     {
-    my($next) = $3 - $2;
-    $_ = "  first failed=dddd last try=dddd next try=+$next $4\n";
+    my($next) = $4 - $3;
+    $_ = "$1first failed=dddd last try=dddd next try=+$next $5\n";
     }
   s/^(\s*)now=\d+ first_failed=\d+ next_try=\d+ expired=(\w)/$1now=tttt first_failed=tttt next_try=tttt expired=$2/;
   s/^(\s*)received_time=\d+ diff=\d+ timeout=(\d+)/$1received_time=tttt diff=tttt timeout=$2/;
@@ -1052,6 +1055,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # remote IPv6 addrs vary
     s/^(Connection request from) \[.*:.*:.*\]$/$1 \[ipv6\]/;
 
+    # Hints DB use of lockfiles is provider-dependent
+    s/Failed to open \K(?:DBM|database lock) file (.*\/spool\/db\/[^.]*)(?:.lockfile)?(?=(?: for reading)?: No such file or directory$)/hintsdb $1/;
+
     # openssl version variances
   # Error lines on stdout from SSL contain process id values and file names.
   # They also contain a source file name and line number, which may vary from
@@ -1132,9 +1138,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     # 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:
@@ -1149,6 +1155,10 @@ RESET_AFTER_EXTRA_LINE_READ:
                )
              /x;
 
+    # Hints DB use of lockfiles is provider-dependent
+    next if /lock(?:ing|ed) .*\/spool\/db\/[^.]+\.lockfile$/;
+    s/closed hints database\K and lockfile$//;
+
     # Lines with a leading pid.  Only handle >= 4-digit PIDs to avoid converting SMTP respose codes
     s/^\s*(\d{4,})\s(?!(?:previous message|in\s|bytes remain in|SMTP accept process running))/new_value($1, "p%s", \$next_pid) . ' '/e;