Add extract_sigle method to archive
Change-Id: Ic2eb6578c6e8fb57e2191f685a000fd712ec463d
diff --git a/t/archive.t b/t/archive.t
index 1cd3c00..f86277f 100644
--- a/t/archive.t
+++ b/t/archive.t
@@ -1,6 +1,7 @@
#!/usr/bin/env perl
use strict;
use warnings;
+use Data::Dumper;
use Test::More;
use File::Basename 'dirname';
use File::Spec::Functions qw/catfile catdir/;
@@ -52,6 +53,35 @@
$archive = KorAP::XML::Archive->new($file);
ok(!$archive->check_prefix, 'Archive has no dot prefix');
+my @cmd = map { join ' ', @{$_} } $archive->cmds_from_sigle(['REI/RB*', 'REI/BNG/00071']);
+
+like($cmd[0], qr!unzip -qo -uo t/corpus/archive_rei\.zip!);
+like($cmd[0], qr!\QREI/header.xml REI/RB*/header.xml REI/RB* REI/BNG/header.xml REI/BNG/00071/*\E!);
+ok(!$cmd[1]);
+
+# New temporary directory
+$dir = tempdir(CLEANUP => 1);
+
+{
+ local $SIG{__WARN__} = sub {};
+ ok($archive->extract_sigle(['REI/RB*', 'REI/BNG/00071'], $dir), 'Fine');
+};
+
+ok(-d catdir($dir, 'REI'), 'Test corpus directory exists');
+ok(-d catdir($dir, 'REI','BNG'), 'Test corpus directory exists');
+ok(-d catdir($dir, 'REI','BNG','00071'), 'Test corpus directory exists');
+
+ok(-f catdir($dir, 'REI', 'header.xml'), 'Test corpus directory exists');
+ok(-f catdir($dir, 'REI','BNG', 'header.xml'), 'Test corpus directory exists');
+ok(-f catdir($dir, 'REI','BNG','00071', 'header.xml'), 'Test corpus directory exists');
+
+ok(-f catdir($dir, 'REI','RBR', 'header.xml'), 'Test corpus directory exists');
+ok(-f catdir($dir, 'REI','RBR','00610', 'header.xml'), 'Test corpus directory exists');
+ok(-f catdir($dir, 'REI','RBR','00610', 'header.xml'), 'Test corpus directory exists');
+
+ok(!-e catdir($dir, 'REI','BNG','00128'), 'Test corpus directory does not exist');
+
+
done_testing;
__END__
diff --git a/t/script/archive.t b/t/script/archive.t
index 8d0fba1..290784b 100644
--- a/t/script/archive.t
+++ b/t/script/archive.t
@@ -38,7 +38,6 @@
my $input = catfile($f, '..', 'corpus', 'archive.zip');
ok(-f $input, 'Input archive found');
-
my $output = File::Temp->newdir(CLEANUP => 0);
$output->unlink_on_destroy(0);
@@ -221,5 +220,38 @@
$call
);
+
+
+# Test with sigles
+$input = catfile($f, '..', 'corpus', 'archive.zip');
+ok(-f $input, 'Input archive found');
+
+unlink($output);
+
+$call = join(
+ ' ',
+ 'perl', $script,
+ 'archive',
+ '--input' => '' . $input,
+ '--output' => $output,
+ '--sigle' => 'TEST/BSP/2',
+ '--sigle' => 'TEST/BSP/5',
+ '-t' => 'Base#tokens_aggr',
+ '-m' => 'Sgbr'
+);
+
+{
+ local $SIG{__WARN__} = sub {};
+ my $out = stdout_from(sub { system($call); });
+
+ like($out, qr!TEST-BSP-1\.json!s, $call);
+
+ $out =~ m!Processed (.+?\.json)!;
+ $json = $1;
+};
+
+ok(-f $json, 'Json file exists');
+
+
done_testing;
__END__
diff --git a/t/script/extract.t b/t/script/extract.t
index e9f666f..11d7cf3 100644
--- a/t/script/extract.t
+++ b/t/script/extract.t
@@ -167,7 +167,7 @@
sub {
system($call);
},
- qr!Extract .+? REI/BN\*!s,
+ qr!Extract .+? REI/BN!s,
$call
);