1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
use strict;
use warnings;
use Test::More tests => 20;
use File::Temp qw(tempfile);
use Archive::Ar;
my ($fh, $file) = tempfile(UNLINK => 1);
my $content = do {local $/ = undef; <DATA>};
print $fh $content;
close $fh;
my $ar = Archive::Ar->new($file);
isa_ok $ar, 'Archive::Ar', 'object';
is_deeply [$ar->list_files], [qw(odd even)], 'list_files';
my $filedata = $ar->get_content('odd');
is $filedata->{name}, 'odd', 'file1, filedata/name';
is $filedata->{uid}, 2202, 'file1, filedata/uid';
is $filedata->{gid}, 2988, 'file1, filedata/gid';
is $filedata->{mode}, 0100644, 'file1, filedata/mode';
is $filedata->{date}, 1255532835, 'file1, filedata/date';
is $filedata->{size}, 11, 'file1, filedata/size';
is $filedata->{data}, "oddcontent\n", 'file1, filedata/data';
$filedata = $ar->get_content('even');
is $filedata->{name}, 'even', 'file2, filedata/name';
is $filedata->{uid}, 2202, 'file2, filedata/uid';
is $filedata->{gid}, 2988, 'file2, filedata/gid';
is $filedata->{mode}, 0100644, 'file2, filedata/mode';
is $filedata->{date}, 1255532831, 'file2, filedata/date';
is $filedata->{size}, 12, 'file2, filedata/size';
is $filedata->{data}, "evencontent\n", 'file2, filedata/data';
my ($nfh, $nfile) = tempfile(UNLINK => 1);
my $size = $ar->write($nfh);
is $size, 152, 'write size';
close $nfh;
my $nar = Archive::Ar->new($nfile);
is_deeply [$ar->list_files], [$nar->list_files], 'write/read, list_files';
is_deeply $ar->get_content('odd'), $nar->get_content('odd'),
'write/read, file1 compare';
is_deeply $ar->get_content('even'), $nar->get_content('even'),
'write/read, file2 compare';
__DATA__
!<arch>
odd 1255532835 2202 2988 100644 11 `
oddcontent
even 1255532831 2202 2988 100644 12 `
evencontent
|