Improve pg_basebackup long file name test Windows robustness

Creation of a file with a very long name can create problems on Windows
due to its file path limits. Work around that by creating the file via a
symlink with a shorter name.

Error displayed by buildfarm animal fairywren.o

Backpatch to all live branches
REL_15_STABLE
Andrew Dunstan 2 years ago
parent 4b15868b69
commit 86f23d90e5
  1. 8
      src/bin/pg_basebackup/t/010_pg_basebackup.pl

@ -305,8 +305,12 @@ $node->command_fails(
'-T with invalid format fails');
# Tar format doesn't support filenames longer than 100 bytes.
# Create the test file via a short name directory so it doesn't blow the
# Windows path limit.
my $lftmp = PostgreSQL::Test::Utils::tempdir_short;
dir_symlink "$pgdata", "$lftmp/pgdata";
my $superlongname = "superlongname_" . ("x" x 100);
my $superlongpath = "$pgdata/$superlongname";
my $superlongpath = "$lftmp/pgdata/$superlongname";
open my $file, '>', "$superlongpath"
or die "unable to create file $superlongpath";
@ -314,7 +318,7 @@ close $file;
$node->command_fails(
[ @pg_basebackup_defs, '-D', "$tempdir/tarbackup_l1", '-Ft' ],
'pg_basebackup tar with long name fails');
unlink "$pgdata/$superlongname";
unlink "$superlongpath";
# The following tests are for symlinks.

Loading…
Cancel
Save