On 6/14/21 3:32 PM, Andrew Dunstan wrote: > On 6/14/21 1:50 PM, Andrew Dunstan wrote: >> On 6/14/21 1:11 PM, Robert Haas wrote: >>> On Mon, Jun 14, 2021 at 12:56 PM Andrew Dunstan <and...@dunslane.net> wrote: >>>> $^X is not at all broken. >>>> >>>> The explanation here is pretty simple - the argument to perl2host is >>>> meant to be a directory. If we're going to accomodate plain files then >>>> we have some more work to do in TestLib. >>> This explanation seems to contradict the documentation in TestLib.pm, >>> which makes no mention of any such restriction. >> Heres a snippet: >> >> >> sub perl2host >> { >> my ($subject) = @_; >> ... >> if (chdir $subject) >> >> >> Last time I looked you can't chdir to anything except a directory. > > > Actually, I take it back, it does work for a file. I'll change it. I > probably did this when something else wasn't working.
So, will you feel happier with this applied? I haven't tested it yet but I'm confident it will work. 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..3e19bc4c50 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 this way. local $ENV{PERL_BADLANG}=0; $node_primary->start; cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com