From 2e99ce68bcd22d41d417cdd05ccd47d54c30a2a0 Mon Sep 17 00:00:00 2001 From: Andrew Dunstan Date: Thu, 6 Jul 2023 12:27:40 -0400 Subject: [PATCH] Skip pg_baseback long filename test if path too long on Windows On Windows, it's sometimes difficult to create a file with a path longer than 255 chars, and if it can be created it might not be seen by the archiver. This can be triggered by the test for tar backups with filenames greater than 100 bytes. So we skip that test if the path would exceed 255. Backpatch to all live branches. Reviewed by Daniel Gustafsson Discussion: https://postgr.es/m/666ac55b-3400-fb2c-2cea-0281bf36a53c@dunslane.net --- src/bin/pg_basebackup/t/010_pg_basebackup.pl | 24 ++++++++++++-------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/bin/pg_basebackup/t/010_pg_basebackup.pl b/src/bin/pg_basebackup/t/010_pg_basebackup.pl index 29d0ae0a42c..80806414dbc 100644 --- a/src/bin/pg_basebackup/t/010_pg_basebackup.pl +++ b/src/bin/pg_basebackup/t/010_pg_basebackup.pl @@ -196,17 +196,23 @@ $node->command_fails( [ 'pg_basebackup', '-D', "$tempdir/backup_foo", '-Fp', "-Tfoo" ], '-T with invalid format fails'); -# Tar format doesn't support filenames longer than 100 bytes. my $superlongname = "superlongname_" . ("x" x 100); -my $superlongpath = "$pgdata/$superlongname"; +# Tar format doesn't support filenames longer than 100 bytes. +SKIP: +{ + my $superlongpath = "$pgdata/$superlongname"; -open my $file, '>', "$superlongpath" - or die "unable to create file $superlongpath"; -close $file; -$node->command_fails( - [ 'pg_basebackup', '-D', "$tempdir/tarbackup_l1", '-Ft' ], - 'pg_basebackup tar with long name fails'); -unlink "$pgdata/$superlongname"; + skip "File path too long", 1 + if $windows_os && length($superlongpath) > 255; + + open my $file, '>', "$superlongpath" + or die "unable to create file $superlongpath"; + close $file; + $node->command_fails( + [ 'pg_basebackup', '-D', "$tempdir/tarbackup_l1", '-Ft' ], + 'pg_basebackup tar with long name fails'); + unlink "$superlongpath"; +} # The following tests test symlinks. Windows doesn't have symlinks, so # skip on Windows. -- 2.39.5