diff options
Diffstat (limited to 't/01packdrake.t')
-rwxr-xr-x | t/01packdrake.t | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/t/01packdrake.t b/t/01packdrake.t new file mode 100755 index 0000000..1d0aebf --- /dev/null +++ b/t/01packdrake.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl + +# $Id$ + +use strict; +use Test::More tests => 7; +use Digest::MD5; + +use_ok('packdrake'); + +-d "test" || mkdir "test" or die "Can't create directory test"; + +my $coin = q{ + ___________ +< Coin coin > + ----------- + \ ,~~. + \ __( o ) + `--'==( ___/) + ( ( . / + \ '-' / + ~'`~'`~'`~'`~ +}; + +sub clean_test_files { + -d "test" or return; + system("rm -fr $_") foreach (glob("test/*")); +} + +clean_test_files(); + +mkdir "test/dir" or die "Can't create 'test/dir'"; +open(my $fh, "> test/file") or die "Can't create 'test/file'"; +print $fh $coin; +close $fh; + +symlink("file", "test/link") or die "Can't create symlink 'test/link': $!\n"; + +open($fh, "> test/list") or die "can't open 'test/list': $!\n"; +print($fh join("\n", qw(dir file link)) ."\n"); +close($fh); + +open(my $listh, "< test/list") or die "can't read 'test/list': $!\n"; +ok(packdrake::build_archive( + $listh, + "test", + "packtest.cz", + 400_000, + "gzip -9", + "gzip -d", +), "Creating a packdrake archive"); +close($listh); + +clean_test_files(); + +my $pack = packdrake->new("packtest.cz"); +ok($pack->extract_archive("test", qw(dir file link)), "Extracting files from archive"); + +ok(open($fh, "test/file"), "Opening extract file"); +sysread($fh, my $data, 1_000); +ok($data eq $coin, "data successfully restored"); +ok(-d "test/dir", "dir successfully restored"); +ok(readlink("test/link") eq "file", "symlink successfully restored"); + +clean_test_files(); + |