From ca3f43aa48a83013ea50aeee7cd193a5859c4587 Mon Sep 17 00:00:00 2001 From: Robert Haas <rhaas@postgresql.org> Date: Fri, 19 Jun 2015 10:46:30 -0400 Subject: [PATCH] Change TAP test framework to not rely on having a chmod executable. This might not work at all on Windows, and is not ever efficient. Michael Paquier --- src/test/ssl/ServerSetup.pm | 16 +++++++++++++++- src/test/ssl/t/001_ssltests.pl | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/test/ssl/ServerSetup.pm b/src/test/ssl/ServerSetup.pm index 4ce4a69e741..bbff99a3bdb 100644 --- a/src/test/ssl/ServerSetup.pm +++ b/src/test/ssl/ServerSetup.pm @@ -43,6 +43,20 @@ sub copy_files } } +# Perform chmod on a set of files, taking into account wildcards +sub chmod_files +{ + my $mode = shift; + my $file_expr = shift; + + my @all_files = glob $file_expr; + foreach my $file_entry (@all_files) + { + chmod $mode, $file_entry + or die "Could not run chmod with mode $mode on $file_entry"; + } +} + sub configure_test_server_for_ssl { my $tempdir = $_[0]; @@ -68,7 +82,7 @@ sub configure_test_server_for_ssl # Copy all server certificates and keys, and client root cert, to the data dir copy_files("ssl/server-*.crt", "$tempdir/pgdata"); copy_files("ssl/server-*.key", "$tempdir/pgdata"); - system_or_bail "chmod 0600 '$tempdir'/pgdata/server-*.key"; + chmod_files(0600, "$tempdir/pgdata/server-*.key"); copy_files("ssl/root+client_ca.crt", "$tempdir/pgdata"); copy_files("ssl/root+client.crl", "$tempdir/pgdata"); diff --git a/src/test/ssl/t/001_ssltests.pl b/src/test/ssl/t/001_ssltests.pl index 926b529198d..5d24d8de520 100644 --- a/src/test/ssl/t/001_ssltests.pl +++ b/src/test/ssl/t/001_ssltests.pl @@ -78,7 +78,7 @@ sub test_connect_fails # The client's private key must not be world-readable. Git doesn't track # permissions (except for the executable bit), so they might be wrong after # a checkout. -system_or_bail "chmod 0600 ssl/client.key"; +chmod 0600, "ssl/client.key"; #### Part 0. Set up the server. -- GitLab