X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/c9fb699464874a5c8932d1766405244f89203102..d63a9563033c690d8b7f572780b332fa9620ef3b:/test/runtest?ds=sidebyside diff --git a/test/runtest b/test/runtest index 71623a2f3..71d4434f1 100755 --- a/test/runtest +++ b/test/runtest @@ -14,6 +14,7 @@ ############################################################################### #use strict; +use 5.010; use Errno; use FileHandle; use Socket; @@ -82,13 +83,16 @@ $parm_port_d3 = 1227; # Additional for daemon $parm_port_d4 = 1228; # Additional for daemon # Manually set locale -$ENV{'LC_ALL'} = 'C'; +$ENV{LC_ALL} = 'C'; # In some environments USER does not exists, but we # need it for some test(s) $ENV{USER} = getpwuid($>) if not exists $ENV{USER}; +my ($parm_configure_owner, $parm_configure_group); +my ($parm_ipv4, $parm_ipv6); +my $parm_hostname; ############################################################################### ############################################################################### @@ -758,10 +762,6 @@ RESET_AFTER_EXTRA_LINE_READ: s/Delivered\s+\d+/Delivered nnn/; - # ======== Values in spool space failure message ======== - s/space=\d+ inodes=[+-]?\d+/space=xxxxx inodes=xxxxx/; - - # ======== Filter sizes ======== # The sizes of filter files may vary because of the substitution of local # filenames, logins, etc. @@ -1028,7 +1028,7 @@ RESET_AFTER_EXTRA_LINE_READ: s/^cmd buf flush \d+ bytes$/cmd buf flush ddd bytes/; # Spool filesystem free space changes on different systems. - s/^((spool|log) directory space =) \d+K (inodes =) \d+/$1 nnnnnK $3 nnnnn/; + s/^((?:spool|log) directory space =) -?\d+K (inodes =)\s*-?\d+/$1 nnnnnK $2 nnnnn/; # When Exim is checking the size of directories for maildir, it uses # the check_dir_size() function to scan directories. Of course, the order @@ -2343,7 +2343,7 @@ return $yield; # Ran command and waited ############################################################################### ############################################################################### -# Here beginneth the Main Program ... +# Here begins the Main Program ... ############################################################################### ############################################################################### @@ -2373,7 +2373,7 @@ umask 022; # Check for the "less" command # ################################################## -$more = "more" if system("which less >/dev/null 2>&1") != 0; +$more = 'more' if system('which less >/dev/null 2>&1') != 0; @@ -2382,7 +2382,7 @@ $more = "more" if system("which less >/dev/null 2>&1") != 0; ################################################## print "You need to have sudo access to root to run these tests. Checking ...\n"; -if (system("sudo date >/dev/null") != 0) +if (system('sudo true >/dev/null') != 0) { die "** Test for sudo failed: testing abandoned.\n"; } @@ -3024,38 +3024,29 @@ else # Find this host's IP addresses - there may be many, of course, but we keep # one of each type (IPv4 and IPv6). -$parm_ipv4 = ""; -$parm_ipv6 = ""; - -$local_ipv4 = ""; -$local_ipv6 = ""; - -open(IFCONFIG, "ifconfig -a|") || die "** Cannot run \"ifconfig\": $!\n"; -while (($parm_ipv4 eq "" || $parm_ipv6 eq "") && ($_ = )) +open(IFCONFIG, 'ip address|') # show *all*, addresses w/o label + or open(IFCONFIG, 'ifconfig -a|') # probably skips addresses w/o label + or die "** Cannot run 'ifconfig' or 'ip address': $!\n"; +while (not ($parm_ipv4 and $parm_ipv6) and defined($_ = )) { - my($ip); - if ($parm_ipv4 eq "" && - $_ =~ /^\s*inet(?:\saddr)?:?\s?(\d+\.\d+\.\d+\.\d+)\s/i) + if (not $parm_ipv4 and /^\s*inet(?:\saddr)?:?\s?(\d+\.\d+\.\d+\.\d+)(?:\/\d+)\s/i) { - $ip = $1; - next if ($ip =~ /^127\./ || $ip =~ /^10\./); - $parm_ipv4 = $ip; + next if $1 =~ /^(?:127|10)\./; + $parm_ipv4 = $1; } - if ($parm_ipv6 eq "" && - $_ =~ /^\s*inet6(?:\saddr)?:?\s?([abcdef\d:]+)/i) + if (not $parm_ipv6 and /^\s*inet6(?:\saddr)?:?\s?([abcdef\d:]+)(?:\/\d+)/i) { - $ip = $1; - next if ($ip eq "::1" || $ip =~ /^fe80/i); - $parm_ipv6 = $ip; + next if $1 eq '::1' or $1 =~ /^fe80/i; + $parm_ipv6 = $1; } } close(IFCONFIG); # Use private IP addresses if there are no public ones. -$parm_ipv4 = $local_ipv4 if ($parm_ipv4 eq ""); -$parm_ipv6 = $local_ipv6 if ($parm_ipv6 eq ""); +$parm_ipv4 //= '172.10.10.1'; +$parm_ipv6 //= 'fd0a:c2ea:abfa::1'; # If either type of IP address is missing, we need to set the value to # something other than empty, because that wrecks the substitutions. The value @@ -3065,7 +3056,7 @@ $parm_ipv6 = $local_ipv6 if ($parm_ipv6 eq ""); # of IPV4 or IPv6 can be simulated by command options, which force $have_ipv4 # and $have_ipv6 false. -if ($parm_ipv4 eq "") +if (not $parm_ipv4) { $have_ipv4 = 0; $parm_ipv4 = ""; @@ -3081,7 +3072,7 @@ else $parm_running{"IPv4"} = " "; } -if ($parm_ipv6 eq "") +if (not $parm_ipv6) { $have_ipv6 = 0; $parm_ipv6 = ""; @@ -3129,7 +3120,7 @@ if ($parm_ipv6 =~ /^[\da-f]/) # Find the host name, fully qualified. chomp($temp = `hostname`); -$parm_hostname = (gethostbyname($temp))[0]; +$parm_hostname = (gethostbyname($temp))[0] // $temp; $parm_hostname = "no.host.name.found" if $parm_hostname eq ""; print "Hostname is $parm_hostname\n";