# 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";
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./;
# [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 { $_ = <T>; }
+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 <T>;
}
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";
}
for (;;)
{
- print "Continue, Show, or Quit? [Q] ";
- $_ = $force_continue ? "c" : <T>;
- 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$/);
}
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);
}
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;
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)
{
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)
{
# 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;
}
{
$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
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();
$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);
# 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,
# 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');
##################################################