Narada

 view release on metacpan or  search on metacpan

t/narada-backup.t  view on Meta::CPAN

use lib 't'; use share; guard my $guard;
use Test::Differences;


my $TAR = (grep {-x "$_/gtar"} split /:/, $ENV{PATH}) ? 'gtar' : 'tar';

umask 0022;
my $dir1 = narada_new();
my $dir2 = narada_new();

# $dir1 is test directory
# $dir2 is etalon directory
for my $dir ($dir1, $dir2) {
    filldir($dir);
    system("
        cd \Q$dir\E
        echo val > config/var   &&
        touch var/data          &&
        echo test >> var/log/current
    ") == 0 or die "system: $?";
}
filldir("$dir1/tmp/");
filldir("$dir1/.backup/");


is system("cd \Q$dir1\E; narada-backup"), 0, 'first backup';
ok -e "$dir1/.backup/full.tar", 'full.tar created';
ok ! -e "$dir1/.backup/incr.tar", 'incr.tar not created';
check_backup("$dir1/.backup/full.tar");
system("cd \Q$dir1\E; cp .backup/full.tar tmp/full1.tar") == 0 or die "system: $?";

my $old_size = -s "$dir1/.backup/full.tar";
is system("cd \Q$dir1\E; narada-backup"), 0, 'second backup';
# XXX incremental archives was disabled
# ok $old_size < -s "$dir1/.backup/full.tar", 'full.tar grow up';
# ok -e "$dir1/.backup/incr.tar", 'incr.tar created';
# system("cd \Q$dir1\E; cp .backup/incr.tar tmp/incr1.tar") == 0 or die "system: $?";

sleep 1;    # tar will detect changes based on mtime
for my $dir ($dir1, $dir2) {
    mkdir "$dir/var/some" or die "mkdir: $!";
    filldir("$dir/var/some/");
    system("
        cd \Q$dir\E         &&
        rm config/var       &&
        rmdir .hiddendir    &&
        chmod 0712 var/data
    ");
}
mkdir "$dir1/tmp/some" or die "mkdir: $!";
filldir("$dir1/tmp/some/");
system("cd \Q$dir1\E && rm tmp/some/file && rmdir tmp/some/.hiddendir");

is system("cd \Q$dir1\E; narada-backup"), 0, 'third backup';
# XXX incremental archives was disabled
# system("cd \Q$dir1\E; cp .backup/incr.tar tmp/incr2.tar") == 0 or die "system: $?";
SKIP: {
    skip 'unstable on CPAN Testers', 2 if !$ENV{RELEASE_TESTING} && ($ENV{AUTOMATED_TESTING} || $ENV{PERL_CPAN_REPORTER_CONFIG});
    check_backup("$dir1/.backup/full.tar");
    # XXX incremental archives was disabled
    # check_backup("$dir1/tmp/full1.tar", "$dir1/tmp/incr1.tar", "$dir1/tmp/incr2.tar");
}



( run in 1.010 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )