Improve pg_basebackup long file name test Windows robustness
authorAndrew Dunstan <[email protected]>
Mon, 3 Jul 2023 14:06:26 +0000 (10:06 -0400)
committerAndrew Dunstan <[email protected]>
Mon, 3 Jul 2023 14:07:24 +0000 (10:07 -0400)
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

src/bin/pg_basebackup/t/010_pg_basebackup.pl

index 72a2cf8ac82fae939ab3bc400d0cb06304cd6e53..6a3b96bca2fa1ea8aefb3cc087c0e197597f3d8f 100644 (file)
@@ -203,8 +203,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";
@@ -212,7 +216,7 @@ close $file;
 $node->command_fails(
    [ 'pg_basebackup', '-D', "$tempdir/tarbackup_l1", '-Ft' ],
    'pg_basebackup tar with long name fails');
-unlink "$pgdata/$superlongname";
+unlink "$superlongpath";
 
 # The following tests are for symlinks.