postgres.git / summary / log / commit / refs

commit    83ed4de20fdb60457d315065fc7895dfb51108be
Author:   Andrew Dunstan <andrew@dunslane.net>
Date:     Mon Jul 03 14:06:26 2023 +0000

    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


src/bin/pg_basebackup/t/010_pg_basebackup.pl | 8 ++++++-- 1 file 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. [parent: c8987ea90cf2]