Further refinement of stuck_on_old_timeline recovery test
authorAndrew Dunstan <[email protected]>
Tue, 15 Jun 2021 19:30:11 +0000 (15:30 -0400)
committerAndrew Dunstan <[email protected]>
Tue, 15 Jun 2021 19:37:24 +0000 (15:37 -0400)
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

index 298066dba0961562ce8bd4cb688a11a4b0657d6f..367bc5c42718dff9a6cdd7247f135b0ea9ed61d8 100644 (file)
@@ -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_segments=8
 ));
+# 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;