Testsuite: OpenSSL version differences
[exim.git] / test / lib / Exim / Runtest.pm
index bdf9c60d6bcb544baf2d2a51113d62a56e081ef7..6c2262f558646d36d1420865f2f6d6271bc59d4f 100644 (file)
@@ -7,7 +7,9 @@ use IO::Socket::INET;
 use Cwd;
 use Carp;
 
-use parent 'Exporter';
+use Exporter;
+our @ISA = qw(Exporter);
+
 our @EXPORT_OK = qw(mailgroup dynamic_socket exim_binary flavour flavours);
 our %EXPORT_TAGS = (
     all => \@EXPORT_OK,
@@ -62,8 +64,10 @@ sub dynamic_socket {
 sub exim_binary {
 
     # two simple cases, absolute path or relative path and executable
-    return @_ if $_[0] =~ /^\//;
-    return Cwd::abs_path(shift), @_ if -x $_[0];
+    if (@_) {
+        return @_ if $_[0] =~ /^\//;
+        return Cwd::abs_path(shift), @_ if -x $_[0];
+    }
 
     # so we're still here, if the simple approach didn't help.
 
@@ -99,6 +103,7 @@ sub exim_binary {
             my $os = `$_/scripts/os-type`;
             my $arch = `$_/scripts/arch-type`;
             chomp($os, $arch);
+            ($ENV{build} ? "$_/build-$ENV{build}" : ()),
             "$_/build-$os-$arch" . ($ENV{EXIM_BUILD_SUFFIX} ? ".$ENV{EXIM_BUILD_SUFFIX}" : '');
         } @candidates;
 
@@ -114,10 +119,14 @@ sub flavour {
         $etc = shift;
     }
 
+    if (open(my $f, '-|', 'openssl version')) {
+       <$f> =~ /(1\.1\.1|3\.\d+\.\d+)/ && return "openssl_1_1_1";
+    }
+
     if (open(my $f, '<', "$etc/os-release")) {
         local $_ = join '', <$f>;
         my ($id) = /^ID="?(.*?)"?\s*$/m;
-        my ($version) = /^VERSION_ID="?(.*?)"?\s*$/m;
+        my $version = /^VERSION_ID="?(.*?)"?\s*$/m ? $1 : '';
         return "$id$version";
     }
 
@@ -132,7 +141,7 @@ sub flavour {
 
 sub flavours {
     my %h = map { /\.(\S+)$/, 1 }
-            glob('stdout/*.*'), glob('stderr/*.*');
+            grep { !/\.orig$/ } glob('stdout/*.*'), glob('stderr/*.*'), glob('log/*.*');
     return sort keys %h;
 }
 
@@ -169,7 +178,7 @@ typical files in the F</etc> directory.
 
 =item B<flavours>()
 
-Return a list of available flavours. It does so by scanning F<stdout/> and
+Return a list of available flavours. It does so by scanning F<log/>, F<stdout/> and
 F<stderr/> for I<flavour> files (extensions after the numerical prefix.
 
 =back