1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2024-12-14 10:13:05 +02:00
pgbackrest/test/lib/pgBackRestTest/File/FileLinkTest.pm
David Steele e2ac7e1ea6 Fixed a regression introduced in v1.13 that could cause backups to fail.
This happened if files were removed (e.g. tables dropped) while the manifest was being built.

Reported by Navid Golpayegani.
2017-02-13 19:59:14 -05:00

59 lines
2.7 KiB
Perl

####################################################################################################################################
# FileLinkTest.pm - Tests for FileCommon::fileLinkDestination
####################################################################################################################################
package pgBackRestTest::File::FileLinkTest;
use parent 'pgBackRestTest::File::FileCommonTest';
####################################################################################################################################
# Perl includes
####################################################################################################################################
use strict;
use warnings FATAL => qw(all);
use Carp qw(confess);
use English '-no_match_vars';
use Fcntl qw(:mode);
use File::stat;
use pgBackRest::Common::Exception;
use pgBackRest::Common::Log;
use pgBackRest::FileCommon;
use pgBackRestTest::Common::ExecuteTest;
use pgBackRestTest::Common::RunTest;
####################################################################################################################################
# run
####################################################################################################################################
sub run
{
my $self = shift;
################################################################################################################################
if ($self->begin("FileCommon::fileLinkDestination()"))
{
#---------------------------------------------------------------------------------------------------------------------------
my $strTestLink = $self->testPath() . '/public_dir_link';
$self->testException(
sub {fileLinkDestination($strTestLink)}, ERROR_FILE_MISSING,
"unable to get destination for link ${strTestLink}: No such file or directory");
#---------------------------------------------------------------------------------------------------------------------------
my $strTestPath = $self->testPath() . '/public_dir';
filePathCreate($strTestPath);
$self->testException(
sub {fileLinkDestination($strTestPath)}, ERROR_FILE_OPEN,
"unable to get destination for link ${strTestPath}: Invalid argument");
#---------------------------------------------------------------------------------------------------------------------------
symlink($strTestPath, $strTestLink)
or confess &log(ERROR, "unable to create symlink from ${strTestPath} to ${strTestLink}");
$self->testResult(sub {fileLinkDestination($strTestLink)}, $strTestPath, 'get link destination');
}
}
1;