]> granicus.if.org Git - postgresql/commitdiff
Make SSL regression test suite more portable by avoiding cp.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 9 Apr 2015 19:07:18 +0000 (22:07 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 9 Apr 2015 19:07:18 +0000 (22:07 +0300)
Use perl 'glob' and File::Copy instead of "cp". This takes us one step
closer to running the suite on Windows.

Michael Paquier

src/test/ssl/ServerSetup.pm

index 1579dc9137a7113e061e6470ab2645990cebeb94..fda3afebc18cd0820f0df9349efb465e5d69e158 100644 (file)
@@ -19,6 +19,8 @@ package ServerSetup;
 use strict;
 use warnings;
 use TestLib;
+use File::Basename;
+use File::Copy;
 use Test::More;
 
 use Exporter 'import';
@@ -26,6 +28,20 @@ our @EXPORT = qw(
   configure_test_server_for_ssl switch_server_cert
 );
 
+# Copy a set of files, taking into account wildcards
+sub copy_files
+{
+       my $orig = shift;
+       my $dest = shift;
+
+       my @orig_files = glob $orig;
+       foreach my $orig_file (@orig_files)
+       {
+               my $base_file = basename($orig_file);
+               copy($orig_file, "$dest/$base_file") or die "Could not copy $orig_file to $dest";
+       }
+}
+
 sub configure_test_server_for_ssl
 {
   my $tempdir = $_[0];
@@ -48,13 +64,12 @@ sub configure_test_server_for_ssl
 
   close CONF;
 
-
   # Copy all server certificates and keys, and client root cert, to the data dir
-  system_or_bail "cp ssl/server-*.crt '$tempdir'/pgdata";
-  system_or_bail "cp ssl/server-*.key '$tempdir'/pgdata";
+  copy_files("ssl/server-*.crt", "$tempdir/pgdata");
+  copy_files("ssl/server-*.key", "$tempdir/pgdata");
   system_or_bail "chmod 0600 '$tempdir'/pgdata/server-*.key";
-  system_or_bail "cp ssl/root+client_ca.crt '$tempdir'/pgdata";
-  system_or_bail "cp ssl/root+client.crl '$tempdir'/pgdata";
+  copy_files("ssl/root+client_ca.crt", "$tempdir/pgdata");
+  copy_files("ssl/root+client.crl", "$tempdir/pgdata");
 
   # Only accept SSL connections from localhost. Our tests don't depend on this
   # but seems best to keep it as narrow as possible for security reasons.