|
Packit |
0bf95d |
#!/usr/bin/perl
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Test Archive::Zip updating
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use strict;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
BEGIN {
|
|
Packit |
0bf95d |
$| = 1;
|
|
Packit |
0bf95d |
$^W = 1;
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
use File::Spec ();
|
|
Packit |
0bf95d |
use IO::File ();
|
|
Packit |
0bf95d |
use File::Find ();
|
|
Packit |
0bf95d |
use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use Test::More tests => 12;
|
|
Packit |
0bf95d |
use lib 't';
|
|
Packit |
0bf95d |
use common;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my ($testFileVolume, $testFileDirs, $testFileName) = File::Spec->splitpath($0);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $zip = Archive::Zip->new();
|
|
Packit |
0bf95d |
my $testDir = File::Spec->catpath($testFileVolume, $testFileDirs, '');
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $numberOfMembers = 0;
|
|
Packit |
0bf95d |
my @memberNames;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
sub countMembers {
|
|
Packit |
0bf95d |
unless ($_ eq '.') { push(@memberNames, $_); $numberOfMembers++; }
|
|
Packit |
0bf95d |
}
|
|
Packit |
0bf95d |
File::Find::find(\&countMembers, $testDir);
|
|
Packit |
0bf95d |
is($numberOfMembers > 1, 1, 'not enough members to test');
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# an initial updateTree() should act like an addTree()
|
|
Packit |
0bf95d |
is($zip->updateTree($testDir), AZ_OK, 'initial updateTree failed');
|
|
Packit |
0bf95d |
is(scalar($zip->members()),
|
|
Packit |
0bf95d |
$numberOfMembers, 'wrong number of members after create');
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
my $firstFile = $memberNames[0];
|
|
Packit |
0bf95d |
my $firstMember = ($zip->members())[0];
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
is($firstFile, $firstMember->fileName(), 'member name wrong');
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# add a file to the directory
|
|
Packit |
0bf95d |
$testFileName = File::Spec->catpath($testFileVolume, $testFileDirs, 'xxxxxx');
|
|
Packit |
0bf95d |
my $fh = IO::File->new($testFileName, 'w');
|
|
Packit |
0bf95d |
$fh->print('xxxx');
|
|
Packit |
0bf95d |
undef($fh);
|
|
Packit |
0bf95d |
is(-f $testFileName, 1, "creating $testFileName failed");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Then update it. It should be added.
|
|
Packit |
0bf95d |
is($zip->updateTree($testDir), AZ_OK, 'updateTree failed');
|
|
Packit |
0bf95d |
is(
|
|
Packit |
0bf95d |
scalar($zip->members()),
|
|
Packit |
0bf95d |
$numberOfMembers + 1,
|
|
Packit |
0bf95d |
'wrong number of members after update'
|
|
Packit |
0bf95d |
);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Delete the file.
|
|
Packit |
0bf95d |
unlink($testFileName);
|
|
Packit |
0bf95d |
is(-f $testFileName, undef, "deleting $testFileName failed");
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# updating without the mirror option should keep the members
|
|
Packit |
0bf95d |
is($zip->updateTree($testDir), AZ_OK, 'updateTree failed');
|
|
Packit |
0bf95d |
is(
|
|
Packit |
0bf95d |
scalar($zip->members()),
|
|
Packit |
0bf95d |
$numberOfMembers + 1,
|
|
Packit |
0bf95d |
'wrong number of members after update'
|
|
Packit |
0bf95d |
);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# now try again with the mirror option; should delete the last file.
|
|
Packit |
0bf95d |
is($zip->updateTree($testDir, undef, undef, 1), AZ_OK, 'updateTree failed');
|
|
Packit |
0bf95d |
is(scalar($zip->members()),
|
|
Packit |
0bf95d |
$numberOfMembers, 'wrong number of members after mirror');
|