From 54a5ed22016940d7ad5060ed62d23473924756a1 Mon Sep 17 00:00:00 2001 From: Andrew Dunstan Date: Tue, 15 Jun 2021 15:30:11 -0400 Subject: [PATCH] Further refinement of stuck_on_old_timeline recovery test TestLib::perl2host can take a file argument as well as a directory argument, so that code becomes substantially simpler. Also add comments on why we're using forward slashes, and why we're setting PERL_BADLANG=0. Discussion: https://postgr.es/m/e9947bcd-20ee-027c-f0fe-01f736b7e345@dunslane.net --- src/test/recovery/t/025_stuck_on_old_timeline.pl | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/test/recovery/t/025_stuck_on_old_timeline.pl b/src/test/recovery/t/025_stuck_on_old_timeline.pl index e4e58cb8ab..dbaab8e6e6 100644 --- a/src/test/recovery/t/025_stuck_on_old_timeline.pl +++ b/src/test/recovery/t/025_stuck_on_old_timeline.pl @@ -24,11 +24,11 @@ my $node_primary = get_new_node('primary'); # the timeline history file reaches the archive but before any of the WAL files # get there. $node_primary->init(allows_streaming => 1, has_archiving => 1); -my $perlbin = $^X; -if ($^O eq 'msys') -{ - $perlbin = TestLib::perl2host(dirname($^X)) . '\\' . basename($^X); -} + +# Note: consistent use of forward slashes here avoids any escaping problems +# that arise from use of backslashes. That means we need to double-quote all +# the paths in the archive_command +my $perlbin = TestLib::perl2host($^X); $perlbin =~ s!\\!/!g if $TestLib::windows_os; my $archivedir_primary = $node_primary->archive_dir; $archivedir_primary =~ s!\\!/!g if $TestLib::windows_os; @@ -36,6 +36,8 @@ $node_primary->append_conf('postgresql.conf', qq( archive_command = '"$perlbin" "$FindBin::RealBin/cp_history_files" "%p" "$archivedir_primary/%f"' wal_keep_size=128MB )); +# Make sure that Msys perl doesn't complain about difficulty in setting locale +# when called from the archive_command. local $ENV{PERL_BADLANG}=0; $node_primary->start;