aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2023-07-03 10:06:26 -0400
committerAndrew Dunstan <andrew@dunslane.net>2023-07-03 10:07:24 -0400
commit83ed4de20fdb60457d315065fc7895dfb51108be (patch)
tree915c0f5417c0b10416328deafcbf033923fe133e
parentc8987ea90cf2b02269f4cc7584b8d1a28e9376b4 (diff)
downloadpostgresql-83ed4de20fdb60457d315065fc7895dfb51108be.tar.gz
postgresql-83ed4de20fdb60457d315065fc7895dfb51108be.zip
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
-rw-r--r--src/bin/pg_basebackup/t/010_pg_basebackup.pl8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/bin/pg_basebackup/t/010_pg_basebackup.pl b/src/bin/pg_basebackup/t/010_pg_basebackup.pl
index 72a2cf8ac82..6a3b96bca2f 100644
--- a/src/bin/pg_basebackup/t/010_pg_basebackup.pl
+++ b/src/bin/pg_basebackup/t/010_pg_basebackup.pl
@@ -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.