aboutsummaryrefslogtreecommitdiffstats
path: root/t/01packdrake.t
diff options
context:
space:
mode:
Diffstat (limited to 't/01packdrake.t')
-rwxr-xr-xt/01packdrake.t66
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();
+