X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/fefe59d9280bc0b33fb9e1e89d0d664db8078542..2d47f67729aecd3dcbacdfd303b719893f2d61fa:/test/runtest diff --git a/test/runtest b/test/runtest index 8b735c1ff..a0d7fd14b 100755 --- a/test/runtest +++ b/test/runtest @@ -46,10 +46,13 @@ $testversion = "4.80 (08-May-12)"; # normal = 2432 tls_dh_max_bits = 2236 $gnutls_dh_bits_normal = 2236; -$cf = "bin/cf -exact"; +$cf = 'bin/cf -exact'; $cr = "\r"; $debug = 0; -$flavour = 'FOO'; +$flavour = do { + my $f = Exim::Runtest::flavour(); + (grep { $f eq $_ } Exim::Runtest::flavours()) ? $f : 'FOO'; +}; $force_continue = 0; $force_update = 0; $log_failed_filename = "failed-summary.log"; @@ -888,7 +891,7 @@ RESET_AFTER_EXTRA_LINE_READ: next if /^SSL info: SSLv2\/v3 write client hello A/; next if /^SSL info: SSLv3 read server key exchange A/; next if /SSL verify error: depth=0 error=certificate not trusted/; - s/SSL3_READ_BYTES/ssl3_read_bytes/; + s/SSL3_READ_BYTES/ssl3_read_bytes/i; # gnutls version variances next if /^Error in the pull function./; @@ -1153,11 +1156,22 @@ return $yield; # [2] if there is a C in the prompt and $force_continue is true # Returns: returns the answer -sub interact{ -print $_[0]; -if ($_[1]) { $_ = "u"; print "... update forced\n"; } - elsif ($_[2]) { $_ = "c"; print "... continue forced\n"; } - else { $_ = ; } +sub interact { + my ($prompt, $have_u, $have_c) = @_; + + print $prompt; + + if ($have_u) { + print "... update forced\n"; + return 'u'; + } + + if ($have_c) { + print "... continue forced\n"; + return 'c'; + } + + return lc ; } @@ -1177,13 +1191,13 @@ if ($_[1]) { $_ = "u"; print "... update forced\n"; } sub log_failure { - my $logfile = shift(); - my $testno = shift(); - my $detail = shift() || ''; - if ( open(my $fh, ">>", $logfile) ) { - print $fh "Test $testno $detail failed\n"; - close $fh; - } + my ($logfile, $testno, $detail) = @_; + + open(my $fh, '>>', $logfile) or return; + + print $fh "Test $testno " + . (defined $detail ? "$detail " : '') + . "failed\n"; } @@ -1230,10 +1244,9 @@ if (! -e $sf_current) for (;;) { - print "Continue, Show, or Quit? [Q] "; - $_ = $force_continue ? "c" : ; - tests_exit(1) if /^q?$/i; - log_failure($log_failed_filename, $testno, $rf) if (/^c$/i && $force_continue); + $_ = interact('Continue, Show, or Quit? [Q] ', undef, $force_continue); + tests_exit(1) if /^q?$/; + log_failure($log_failed_filename, $testno, $rf) if (/^c$/ && $force_continue); return 0 if /^c$/i; last if (/^s$/); } @@ -1252,9 +1265,9 @@ if (! -e $sf_current) print "\n"; for (;;) { - interact("Continue, Update & retry, Quit? [Q] ", $force_update, $force_continue); - tests_exit(1) if /^q?$/i; - log_failure($log_failed_filename, $testno, $rsf) if (/^c$/i && $force_continue); + $_ = interact('Continue, Update & retry, Quit? [Q] ', $force_update, $force_continue); + tests_exit(1) if /^q?$/; + log_failure($log_failed_filename, $testno, $rsf) if (/^c$/ && $force_continue); return 0 if /^c$/i; last if (/^u$/i); } @@ -1372,10 +1385,10 @@ if (-e $sf_current) print "\n"; for (;;) { - interact("Continue, Retry, Update current" - . ($sf_current ne $sf_flavour ? "/Save for flavour '$flavour'" : "") - . " & retry, Quit? [Q] ", $force_update, $force_continue); - tests_exit(1) if /^q?$/i; + $_ = interact('Continue, Retry, Update current' + . ($sf_current ne $sf_flavour ? "/Save for flavour '$flavour'" : '') + . ' & retry, Quit? [Q] ', $force_update, $force_continue); + tests_exit(1) if /^q?$/; log_failure($log_failed_filename, $testno, $sf_current) if (/^c$/i && $force_continue); return 0 if /^c$/i; return 1 if /^r$/i; @@ -1592,16 +1605,16 @@ if (! $message_skip) for (;;) { - interact("Continue, Update & retry, or Quit? [Q] ", $force_update, $force_continue); - tests_exit(1) if /^q?$/i; - log_failure($log_failed_filename, $testno, "missing email") if (/^c$/i && $force_continue); - last if /^c$/i; + $_ = interact('Continue, Update & retry, or Quit? [Q] ', $force_update, $force_continue); + tests_exit(1) if /^q?$/; + log_failure($log_failed_filename, $testno, "missing email") if (/^c$/ && $force_continue); + last if /^c$/; # For update, we not only have to unlink the file, but we must also # remove it from the @oldmails vector, as otherwise it will still be # checked for when we re-run the test. - if (/^u$/i) + if (/^u$/) { foreach $key (keys %expected_mails) { @@ -1676,11 +1689,11 @@ if (! $msglog_skip) for (;;) { - interact("Continue, Update, or Quit? [Q] ", $force_update, $force_continue); - tests_exit(1) if /^q?$/i; - log_failure($log_failed_filename, $testno, "missing msglog") if (/^c$/i && $force_continue); - last if /^c$/i; - if (/^u$/i) + $_ = interact('Continue, Update, or Quit? [Q] ', $force_update, $force_continue); + tests_exit(1) if /^q?$/; + log_failure($log_failed_filename, $testno, "missing msglog") if (/^c$/ && $force_continue); + last if /^c$/; + if (/^u$/) { foreach $key (keys %expected_msglogs) { @@ -1709,14 +1722,9 @@ return $yield; # Returns: nothing sub run_system { -my($cmd) = $_[0]; -if ($debug) - { - my($prcmd) = $cmd; - $prcmd =~ s/; /;\n>> /; - print ">> $prcmd\n"; - } -system("$cmd"); + my $cmd = shift; + print '>> ' . $cmd =~ s/; /;\n>>/r . "\n" if $debug; + system $cmd; } @@ -2243,7 +2251,7 @@ elsif (/^((?i:[A-Z\d_]+=\S+\s+)+)?(\d+)?\s*(sudo(?:\s+-u\s+(\w+))?\s+)?exim(_\S+ { $pidfile = "$parm_cwd/spool/exim-daemon.pid"; if ($debug) { printf ">> daemon: $cmd\n"; } - run_system("sudo mkdir spool/log 2>/dev/null"); + run_system('sudo mkdir spool/log 2>/dev/null'); run_system("sudo chown $parm_eximuser:$parm_eximgroup spool/log"); # Before running the command, convert the -bd option into -bdf so that an @@ -2279,7 +2287,7 @@ elsif (/^((?i:[A-Z\d_]+=\S+\s+)+)?(\d+)?\s*(sudo(?:\s+-u\s+(\w+))?\s+)?exim(_\S+ my $listen_port = $1; if ($debug) { printf ">> wait-mode daemon: $cmd\n"; } - run_system("sudo mkdir spool/log 2>/dev/null"); + run_system('sudo mkdir spool/log 2>/dev/null'); run_system("sudo chown $parm_eximuser:$parm_eximgroup spool/log"); my $pid = fork(); @@ -2579,7 +2587,7 @@ ___ $parm_trusted_config_list = $1 if /^TRUSTED_CONFIG_LIST:.*?"(.*?)"$/; ($parm_configure_owner, $parm_configure_group) = ($1, $2) if /^Configure owner:\s*(\d+):(\d+)/; - print "$_" if /wrong owner/; + print if /wrong owner/; } close(EXIMINFO); @@ -3172,13 +3180,9 @@ if ($parm_hostname =~ /[[:upper:]]/) # that was done above. Furthermore, we ensure that the binary is deleted at the # end of the test. First ensure the directory exists. -if (-d "eximdir") - { unlink "eximdir/exim"; } # Just in case -else - { - mkdir("eximdir", 0710) || die "** Unable to mkdir $parm_cwd/eximdir: $!\n"; - system("sudo chgrp $parm_eximgroup eximdir"); - } +unlink 'eximdir/exim'; # Just in case +-d 'eximdir' or mkdir('eximdir', 0710) or die "** Unable to mkdir $parm_cwd/eximdir: $!\n"; +system("sudo chgrp $parm_eximgroup eximdir"); # The construction of the patched binary must be done as root, so we use # a separate script. As well as indicating that this is a test-harness binary, @@ -3193,16 +3197,16 @@ die "** Unable to make patched exim: $!\n" # tests_exit(), so that suitable cleaning up can be done when required. # Arrange to catch interrupting signals, to assist with this. -$SIG{'INT'} = \&inthandler; -$SIG{'PIPE'} = \&pipehandler; +$SIG{INT} = \&inthandler; +$SIG{PIPE} = \&pipehandler; # For some tests, we need another copy of the binary that is setuid exim rather # than root. -system("sudo cp eximdir/exim eximdir/exim_exim;" . +system('sudo cp eximdir/exim eximdir/exim_exim;' . "sudo chown $parm_eximuser eximdir/exim_exim;" . "sudo chgrp $parm_eximgroup eximdir/exim_exim;" . - "sudo chmod 06755 eximdir/exim_exim"); + 'sudo chmod 06755 eximdir/exim_exim'); ##################################################