summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndres Freund2022-07-18 17:14:43 +0000
committerAndres Freund2022-07-18 17:32:15 +0000
commita91242b1bcb312d6f482a758a432a32bd375896e (patch)
tree99717514372c10680039d69351ad7676e31d564a
parent0df4eb3f708626ba3b0fdfab5afccf785e5e945c (diff)
Deal with paths containing \ and spaces in basebackup_to_shell tests
As $gzip is embedded in postgresql.conf \ needs to be escaped, otherwise guc.c will take it as a string escape. Similarly, if "$gzip" contains spaces, the prior incantation will fail. Both of these are common on windows. Reviewed-by: Peter Eisentraut <[email protected]> Discussion: https://postgr.es/m/[email protected] Backpatch: 15-, where the test was added in 027fa0fd726
-rw-r--r--contrib/basebackup_to_shell/t/001_basic.pl11
1 files changed, 7 insertions, 4 deletions
diff --git a/contrib/basebackup_to_shell/t/001_basic.pl b/contrib/basebackup_to_shell/t/001_basic.pl
index acb66eb9a84..5eb96090a8a 100644
--- a/contrib/basebackup_to_shell/t/001_basic.pl
+++ b/contrib/basebackup_to_shell/t/001_basic.pl
@@ -16,6 +16,9 @@ if (!defined $gzip || $gzip eq '')
plan skip_all => 'gzip not available';
}
+# to ensure path can be embedded in postgresql.conf
+$gzip =~ s{\\}{/}g if ($PostgreSQL::Test::Utils::windows_os);
+
my $node = PostgreSQL::Test::Cluster->new('primary');
# Make sure pg_hba.conf is set up to allow connections from backupuser.
@@ -53,8 +56,8 @@ $escaped_backup_path =~ s{\\}{\\\\}g
if ($PostgreSQL::Test::Utils::windows_os);
my $shell_command =
$PostgreSQL::Test::Utils::windows_os
- ? qq{$gzip --fast > "$escaped_backup_path\\\\%f.gz"}
- : qq{$gzip --fast > "$escaped_backup_path/%f.gz"};
+ ? qq{"$gzip" --fast > "$escaped_backup_path\\\\%f.gz"}
+ : qq{"$gzip" --fast > "$escaped_backup_path/%f.gz"};
$node->append_conf('postgresql.conf',
"basebackup_to_shell.command='$shell_command'");
$node->reload();
@@ -74,8 +77,8 @@ $node->command_fails_like(
# Reconfigure to restrict access and require a detail.
$shell_command =
$PostgreSQL::Test::Utils::windows_os
- ? qq{$gzip --fast > "$escaped_backup_path\\\\%d.%f.gz"}
- : qq{$gzip --fast > "$escaped_backup_path/%d.%f.gz"};
+ ? qq{"$gzip" --fast > "$escaped_backup_path\\\\%d.%f.gz"}
+ : qq{"$gzip" --fast > "$escaped_backup_path/%d.%f.gz"};
$node->append_conf('postgresql.conf',
"basebackup_to_shell.command='$shell_command'");
$node->append_conf('postgresql.conf',