Merge branch 'dane_require_tls_ciphers'
[users/jgh/exim.git] / test / runtest
index 484b799e95251ec060119002a196ba81f292bd29..da02aa4bbfa7c6fcf03fba610da2bab96a814f46 100755 (executable)
@@ -923,8 +923,12 @@ RESET_AFTER_EXTRA_LINE_READ:
     # subsecond timstamp info in reported header-files
     s/^(-received_time_usec \.)\d{6}$/$1uuuuuu/;
 
-    # Postgres server takes varible time to shut down
+    # Postgres server takes varible time to shut down; lives in various places
     s/^waiting for server to shut down\.+ done$/waiting for server to shut down.... done/;
+    s/^\/.*postgres /POSTGRES /;
+
+    # ARC is not always supported by the build
+    next if /^arc_sign =/;
     }
 
   # ======== stderr ========
@@ -1005,7 +1009,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /name=localhost address=::1/;
 
     # drop pdkim debugging header
-    next if /^PDKIM <<<<<<<<<<<<<<<<<<<<<<<<<<<<<+$/;
+    next if /^PDKIM( <<<<<<<<<<<<<<<<<<<<<<<<<<<<<+|: no signatures)$/;
 
     # Various other IPv6 lines must be omitted too
 
@@ -1134,6 +1138,9 @@ RESET_AFTER_EXTRA_LINE_READ:
     next if /^Waiting for MySQL server to answer/;
     next if /mysqladmin: CREATE DATABASE failed; .* database exists/;
 
+    # Not all builds include DMARC
+    next if /^DMARC: no (dmarc_tld_file|sender_host_address)$/ ;
+
     # When Exim is checking the size of directories for maildir, it uses
     # the check_dir_size() function to scan directories. Of course, the order
     # of the files that are obtained using readdir() varies from system to
@@ -1193,6 +1200,7 @@ RESET_AFTER_EXTRA_LINE_READ:
     # openssl version variances
     s/(TLS error on connection [^:]*: error:)[0-9A-F]{8}(:system library):(?:fopen|func\(4095\)):(No such file or directory)$/$1xxxxxxxx$2:fopen:$3/;
     s/(DANE attempt failed.*error:)[0-9A-F]{8}(:SSL routines:)(ssl3_get_server_certificate|tls_process_server_certificate|CONNECT_CR_CERT)(?=:certificate verify failed$)/$1xxxxxxxx$2ssl3_get_server_certificate/;
+    s/(DKIM: validation error: )error:[0-9A-F]{8}:rsa routines:(?:(?i)int_rsa_verify|CRYPTO_internal):(?:bad signature|algorithm mismatch)$/$1Public key signature verification has failed./;
     }
 
   # ======== All files other than stderr ========
@@ -3533,6 +3541,32 @@ DIR: for (my $i = 0; $i < @test_dirs; $i++)
         {
         if (!defined $parm_malware{$1}) { $wantthis = 0; last; }
         }
+      elsif (/^feature (.*)$/)
+        {
+       # move to a subroutine?
+       my $eximinfo = "$parm_exim -C $parm_cwd/test-config -DDIR=$parm_cwd -bP macro $1";
+
+       open (IN, "$parm_cwd/confs/0000") ||
+         tests_exit(-1, "Couldn't open $parm_cwd/confs/0000: $!\n");
+       open (OUT, ">test-config") ||
+         tests_exit(-1, "Couldn't open test-config: $!\n");
+       while (<IN>)
+         {
+         do_substitute($testno);
+         print OUT;
+         }
+       close(IN);
+       close(OUT);
+
+       system($eximinfo . " >/dev/null 2>&1");
+       if ($? != 0) {
+         unlink("$parm_cwd/test-config");
+         $wantthis = 0;
+         $_ = "feature $1";
+         last;
+       }
+       unlink("$parm_cwd/test-config");
+        }
       else
         {
         tests_exit(-1, "Unknown line in \"scripts/$testdir/REQUIRES\": \"$_\"");