testsuite: provide cp() if File::Copy is too old.
authorHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Thu, 1 Apr 2021 09:33:01 +0000 (11:33 +0200)
committerHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Thu, 1 Apr 2021 09:34:20 +0000 (11:34 +0200)
test/lib/Exim/Utils.pm
test/runtest

index b744b0b43e19eea645fe50d11d9b51ac05baacc7..1dbd2d0da567b604db74cd6e39759fda3389fc0b 100644 (file)
@@ -2,8 +2,9 @@ package Exim::Utils;
 use v5.10.1;
 use strict;
 use warnings;
+use File::Copy;
 use parent 'Exporter';
-our @EXPORT_OK = qw(uniq numerically);
+our @EXPORT_OK = qw(uniq numerically cp);
 
 
 sub uniq {
@@ -13,4 +14,14 @@ sub uniq {
 
 sub numerically { $::a <=> $::b }
 
+sub cp {
+    if ($File::Copy::VERSION >= 2.15) { # since Perl 5.11 we should have >= 2.15
+        return File::Copy::cp(@_);
+    }
+    copy(@_) or return undef;
+    my ($src, $dst) = @_;
+    my @st = stat $src or return undef;
+    chmod($st[2]&07777, $dst);
+}
+
 1;
index 64a1493228207eeeafe5a1790feac0ab2357c6b9..c9a07e0f8d2824ec529fef6c3af4d91a43b7efab 100755 (executable)
@@ -29,11 +29,10 @@ use File::Basename;
 use Pod::Usage;
 use Getopt::Long;
 use FindBin qw'$RealBin';
-use File::Copy qw(cp);
 
 use lib "$RealBin/lib";
 use Exim::Runtest;
-use Exim::Utils qw(uniq numerically);
+use Exim::Utils qw(uniq numerically cp);
 
 use if $ENV{DEBUG} && scalar($ENV{DEBUG} =~ /\bruntest\b/) => 'Smart::Comments' => '####';
 use if $ENV{DEBUG} && scalar($ENV{DEBUG} =~ /\bruntest\b/) => 'Data::Dumper';