-#! /usr/bin/perl -w
+#! /usr/bin/env perl
+# We use env, because in some environments of our build farm
+# the Perl 5.010 interpreter is only reachable via $PATH
###############################################################################
# This is the controlling script for the "new" test suite for Exim. It should #
###############################################################################
#use strict;
-#use 5.010;
+use 5.010;
+use warnings;
+
use Errno;
use FileHandle;
use IO::Socket::INET;
# Spool filesystem free space changes on different systems.
s/^((?:spool|log) directory space =) -?\d+K (inodes =)\s*-?\d+/$1 nnnnnK $2 nnnnn/;
+ # Non-TLS builds have different expansions for received_header_text
+ if (s/(with \$received_protocol)\}\} \$\{if def:tls_cipher \{\(\$tls_cipher\)\n$/$1/)
+ {
+ $_ .= <IN>;
+ s/\s+\}\}(?=\(Exim )/\}\} /;
+ }
+ if (/^ condition: def:tls_cipher$/)
+ {
+ <IN>; <IN>; <IN>; <IN>; <IN>; <IN>;
+ <IN>; <IN>; <IN>; <IN>; <IN>; next;
+ }
+
+ # Not all platforms build with DKIM enabled
+ next if /^PDKIM >> Body data for hash, canonicalized/;
+
+ # Not all platforms support TCP Fast Open, and the compile omits the check
+ if (s/\S+ in hosts_try_fastopen\? no \(option unset\)\n$//)
+ {
+ $_ .= <IN>;
+ s/ \.\.\. >>> / ... /;
+ }
+
+ next if /^(ppppp )?setsockopt FASTOPEN: Protocol not available$/;
+
# 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
{ 'stdout' => 's/^\d\d:\d\d:\d\d\s+\d+ //;
s/Process \d+ is ready for new message/Process pppp is ready for new message/'
},
+
+ 'timeout_errno' => # actual errno differs Solaris vs. Linux
+ { 'mainlog' => 's/(host deferral .* errno) <\d+> /$1 <EEE> /' },
};
# Done backwards just in case there are more than 9
- my($i);
- for ($i = @msglist; $i > 0; $i--) { $args =~ s/\$msg$i/$msglist[$i-1]/g; }
+ for (my $i = @msglist; $i > 0; $i--) { $args =~ s/\$msg$i/$msglist[$i-1]/g; }
if ( $args =~ /\$msg\d/ )
{
tests_exit(-1, "Not enough messages in spool, for test $testno line $lineno\n")
# we map all (.../bin) to (.../sbin:.../bin)
$ENV{PATH} = do {
my %seen = map { $_, 1 } split /:/, $ENV{PATH};
- join ':' => map { m{(.*)/bin$}
- ? ( $seen{"$1/sbin"} ? () : ("$1/sbin"), $_)
- : ($_) }
+ join ':' => map { m{(.*)/bin$}
+ ? ( $seen{"$1/sbin"} ? () : ("$1/sbin"), $_)
+ : ($_) }
split /:/, $ENV{PATH};
};
print "Unable to extract exim_user from binary.\n";
print "Check if Exim refused to run; if so, consider:\n";
print " TRUSTED_CONFIG_LIST ALT_CONFIG_PREFIX WHITELIST_D_MACROS\n";
+ print "If debug permission denied, are you in the exim group?\n";
die "Failing to get information from binary.\n";
}
chomp($temp = `hostname`);
die "'hostname' didn't return anything\n" unless defined $temp and length $temp;
-$parm_hostname = (gethostbyname($temp))[0];
-$parm_hostname = "no.host.name.found" unless defined $parm_hostname and length $parm_hostname;
+if ($temp =~ /\./)
+ {
+ $parm_hostname = $temp;
+ }
+else
+ {
+ $parm_hostname = (gethostbyname($temp))[0];
+ $parm_hostname = "no.host.name.found" unless defined $parm_hostname and length $parm_hostname;
+ }
print "Hostname is $parm_hostname\n";
if ($parm_hostname !~ /\./)