diff options
author | Heiko Schlittermann (HS12-RIPE) <hs@schlittermann.de> | 2016-11-04 15:36:50 +0100 |
---|---|---|
committer | Heiko Schlittermann (HS12-RIPE) <hs@schlittermann.de> | 2016-11-04 15:45:07 +0100 |
commit | 6336058cedeecb91a64ed69143b8b5221d08e16c (patch) | |
tree | 44d735a35789cdb2a4ee28bc7afd46118eb2c75c /test/lib | |
parent | ef394e8db2af178e91ed15cc63905016d00952f4 (diff) |
Testsuite: Add flavour detection
Diffstat (limited to 'test/lib')
-rw-r--r-- | test/lib/Exim/Runtest.pm | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/test/lib/Exim/Runtest.pm b/test/lib/Exim/Runtest.pm index 1677ae3e6..bdf9c60d6 100644 --- a/test/lib/Exim/Runtest.pm +++ b/test/lib/Exim/Runtest.pm @@ -2,12 +2,13 @@ package Exim::Runtest; use 5.010; use strict; use warnings; +use File::Basename; use IO::Socket::INET; use Cwd; use Carp; use parent 'Exporter'; -our @EXPORT_OK = qw(mailgroup dynamic_socket exim_binary); +our @EXPORT_OK = qw(mailgroup dynamic_socket exim_binary flavour flavours); our %EXPORT_TAGS = ( all => \@EXPORT_OK, ); @@ -104,6 +105,36 @@ sub exim_binary { return $binaries[0], @_; } +sub flavour { + my $etc = '/etc'; + + if (@_) { + croak "do not pass a directory, it's for testing only" + unless $ENV{HARNESS_ACTIVE}; + $etc = shift; + } + + if (open(my $f, '<', "$etc/os-release")) { + local $_ = join '', <$f>; + my ($id) = /^ID="?(.*?)"?\s*$/m; + my ($version) = /^VERSION_ID="?(.*?)"?\s*$/m; + return "$id$version"; + } + + if (open(my $f, '<', "$etc/debian_version")) { + chomp(local $_ = <$f>); + $_ = int $_; + return "debian$_"; + } + + undef; +} + +sub flavours { + my %h = map { /\.(\S+)$/, 1 } + glob('stdout/*.*'), glob('stderr/*.*'); + return sort keys %h; +} 1; @@ -131,6 +162,16 @@ Otherwise search the binary (while honouring C<EXIM_BUILD_SUFFIX>, C<../scripts/os-type> and C<../os-arch>) and return the the path to the binary and the unmodified I<@argv>. +=item B<flavour>() + +Find a hint for the current flavour (Linux distro). It does so by checking +typical files in the F</etc> directory. + +=item B<flavours>() + +Return a list of available flavours. It does so by scanning F<stdout/> and +F<stderr/> for I<flavour> files (extensions after the numerical prefix. + =back =cut |