X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/18eacc1185bea956bd9c793ab34e582c08941799..d945e180cbe2b26392fb21f7ae4dd2ccc603a81b:/test/runtest diff --git a/test/runtest b/test/runtest index ef202985a..98914d171 100755 --- a/test/runtest +++ b/test/runtest @@ -18,7 +18,6 @@ #use strict; use v5.10.1; use warnings; -use if $^V >= v5.19.11, experimental => 'smartmatch'; use Errno; use FileHandle; @@ -516,8 +515,18 @@ RESET_AFTER_EXTRA_LINE_READ: # time used was fixed when I first started running automatic Exim tests. # Date/time in header lines and SMTP responses - s/[A-Z][a-z]{2},\s\d\d?\s[A-Z][a-z]{2}\s\d{4}\s\d\d\:\d\d:\d\d\s[-+]\d{4} - /Tue, 2 Mar 1999 09:44:33 +0000/gx; + s/[A-Z][a-z]{2}, + (\s|\xE2\x96\x91) + \d\d? + (\s|\xE2\x96\x91) + [A-Z][a-z]{2} + (\s|\xE2\x96\x91) + \d{4} + (\s|\xE2\x96\x91) + \d\d\:\d\d:\d\d + (\s|\xE2\x96\x91) + [-+]\d{4} + /Tue,${1}2${2}Mar${3}1999${4}09:44:33${5}+0000/gx; # and in a French locale s/\S{4},\s\d\d?\s[^,]+\s\d{4}\s\d\d\:\d\d:\d\d\s[-+]\d{4} /dim., 10 f\xE9vr 2019 20:05:49 +0000/gx; @@ -536,8 +545,14 @@ RESET_AFTER_EXTRA_LINE_READ: s/((D|[RQD]T)=)\d\.\d{3}s/$1q.qqqs/g; # Date/time in message separators - s/(?:[A-Z][a-z]{2}\s){2}\d\d\s\d\d:\d\d:\d\d\s\d\d\d\d - /Tue Mar 02 09:44:33 1999/gx; + s/(?:[A-Z][a-z]{2} + (\s|\xE2\x96\x91) + ){2}\d\d + (\s|\xE2\x96\x91) + \d\d:\d\d:\d\d + (\s|\xE2\x96\x91) + \d\d\d\d + /Tue${1}Mar${1}02${2}09:44:33${3}1999/gx; # Date of message arrival in spool file as shown by -Mvh s/^\d{9,10}\s0$/ddddddddd 0/; @@ -1065,6 +1080,9 @@ RESET_AFTER_EXTRA_LINE_READ: # LIMITS is not always supported by the build next if /^limits_advertise_hosts =/; + # PRDR + next if /^hosts_try_prdr = *$/; + # TLS resumption is not always supported by the build next if /^tls_resumption_hosts =/; next if /^-tls_resumption/; @@ -1074,7 +1092,9 @@ RESET_AFTER_EXTRA_LINE_READ: s/250-AUTH ANONYMOUS PLAIN SCRAM-SHA-1\K SCRAM-SHA-256//; # mailq times change with when the run is done, vs. static-source spoolfiles - s/\s*\d*[hd](?= 317 [0-9A-Za-z\-]{23} )/DDd/; + s/\s*\d*[hd](?= 317 (?:[-0-9A-Za-z]{23}|[-0-9A-Za-z]{16}) )/DDd/; + # mailq sizes change with caller running the test + s/\s[01]m [34]\d\d(?= (?:[-0-9A-Za-z]{23}|[-0-9A-Za-z]{16}) )/ 1m 396/; # Not all builds include EXPERIMENTAL_DSN_INFO (1 of 2) if (/^X-Exim-Diagnostic:/) @@ -1202,7 +1222,7 @@ RESET_AFTER_EXTRA_LINE_READ: next if /^TLS: not preloading (CA bundle|cipher list) for server$/; next if /^TLS: not preloading server certs$/; - # some plaatforms are missing the standard CA bundle file + # some platforms are missing the standard CA bundle file next if /^tls_set_watch\(\) fail on '\/usr\/lib\/ssl\/cert.pem': No such file or directory$/; # drop lookups @@ -1256,7 +1276,7 @@ RESET_AFTER_EXTRA_LINE_READ: # drop pdkim debugging header next if /^DKIM( <<<<<<<<<<<<<<<<<<<<<<<<<<<<<+|: no signatures)$/; - # Some platforms have TIOCOUTome do not + # Some platforms have TIOCOUT, some do not next if /\d+ bytes remain in socket output buffer$/; # Various other IPv6 lines must be omitted too @@ -1374,11 +1394,14 @@ RESET_AFTER_EXTRA_LINE_READ: } # Different builds will have different lookup types included - s/^\s*search_type \K\d+ \((\w+)\) quoting -1 \(none\)$/NN ($1) quoting -1 (none)/; + s/search_type \K\d+ \((\w+)\) quoting -1 \(none\)$/NN ($1) quoting -1 (none)/; # and different numbers of lookup types result in different type-code letters, # so convert them all to "0" s%(?.* K C="250- \d)\d+ (byte chunk, total \d)\d+/$1nn $2nn/; + s/(=>.* K (?:DKIM=\S+ )?C="250- \d)\d+ (byte chunk, total \d)\d+/$1nn $2nn/; # 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/; @@ -1593,11 +1617,13 @@ RESET_AFTER_EXTRA_LINE_READ: s/ARC: AMS signing: privkey PEM-block import: error:\K[0-9A-F]{8}:PEM routines:PEM_read_bio:no start line$/1E08010C:DECODER routines::unsupported/; # DKIM timestamps - if ( /(DKIM: d=.*) t=([0-9]*) x=([0-9]*) / ) + if ( /(DKIM: d=.*) t=([0-9]*) x=([0-9]*) \[/ ) { my ($prefix, $t_diff) = ($1, $3 - $2); s/DKIM: d=.* t=[0-9]* x=[0-9]* /${prefix} t=T x=T+${t_diff} /; } + else + { s/DKIM: d=.* \Kt=[0-9]* \[/t=T [/; } # GnuTLS reports a different keysize vs. OpenSSL, for ed25519 keys s/signer: [^ ]* bits:\K 256/ 253/; s/public key too short:\K 256 bits/ 253 bits/; @@ -1640,6 +1666,13 @@ RESET_AFTER_EXTRA_LINE_READ: ; ; } + elsif ( /^(\s+)t=([0-9]*); b=[A-Za-z0-9+\/]+$/ ) + { + my $indent = $1; + s/.*/${indent}t=T; b=bbbb;/; + ; + ; + } # Not all builds include EXPERIMENTAL_DSN_INFO (2 of 2) if (/^X-Exim-Diagnostic:/) @@ -3400,6 +3433,7 @@ GetOptions( print "Exim binary is `$parm_exim'\n" if defined $parm_exim; +my %wanted; my @wanted = sort numerically uniq @tests_wanted ? @tests_wanted : (), @range_wanted ? $range_wanted[0] .. $range_wanted[1] : (), @@ -3408,6 +3442,7 @@ my @wanted = sort numerically uniq 0+$ARGV[0]..0+$ARGV[1] # add 0 to cope with test numbers starting with zero : (); @wanted = 1..TEST_TOP if not @wanted; +map { $wanted{sprintf("%04d",$_)}= $_; } @wanted; ################################################## # Check for sudo access to root # @@ -4220,7 +4255,8 @@ DIR: for (my $i = 0; $i < @test_dirs; $i++) # We want the tests from this subdirectory, provided they are in the # range that was selected. - @testlist = grep { $_ ~~ @wanted } grep { /^\d+(?:\.\d+)?$/ } map { basename $_ } glob "scripts/$testdir/*"; + undef @testlist; + map { push @testlist, $_ if exists $wanted{$_} } grep { /^\d+(?:\.\d+)?$/ } map { basename $_ } glob "scripts/$testdir/*"; tests_exit(-1, "Failed to read test scripts from `scripts/$testdir/*': $!") if not @testlist; @@ -4880,4 +4916,5 @@ Start Exim wrapped by I. (default: don't use valgrind) =cut +# vi: aw ai sw=2 # End of runtest script