Avoid lock in tar building

Change-Id: If726018a137f9d1d6ea63c5b4b319d661fcaf271
diff --git a/t/script/archive_tar.t b/t/script/archive_tar.t
index 1dfd195..8e517c2 100644
--- a/t/script/archive_tar.t
+++ b/t/script/archive_tar.t
@@ -13,6 +13,7 @@
 use Data::Dumper;
 use KorAP::XML::Archive;
 use utf8;
+use Archive::Tar;
 
 if ($ENV{SKIP_SCRIPT}) {
   plan skip_all => 'Skip script tests';
@@ -70,7 +71,79 @@
 like($combined, qr!Writing to file .+?\.tar!, 'Write out');
 like($combined, qr!Wrote to tar archive!, 'Write out');
 
+# Now test with multiple jobs
+$call = join(
+  ' ',
+  'perl', $script,
+  'archive',
+  '--input' => $input,  # Use the same input as the first test
+  '--output' => $output . '_multi.tar',
+  '--cache' => $cache,
+  '-t' => 'Base#tokens_aggr',
+  '-m' => 'Sgbr',  # Add meta type parameter
+  '--to-tar',
+  '--gzip',  # Add gzip parameter
+  '--jobs' => 3  # Use 3 jobs to test multiple tar files
+);
 
+# Test with multiple jobs
+$combined = combined_from( sub { system($call) });
+
+like($combined, qr!Writing to file .+?\.tar!, 'Write out');
+like($combined, qr!Merging 3 temporary tar files!, 'Merging correct number of temp files');
+like($combined, qr!Wrote to tar archive!, 'Write out');
+
+# Read the merged tar with --ignore-zeros
+my $tar_file = $output . '_multi.tar';
+ok(-f $tar_file, 'Multi-job tar file exists');
+
+# Use Archive::Tar to read the merged tar
+my $merged_tar = Archive::Tar->new;
+ok($merged_tar->read($tar_file, 1, {ignore_zeros => 1}), 'Can read merged tar with ignore_zeros');
+
+# Verify expected files are present
+ok($merged_tar->contains_file('TEST-BSP-1.json.gz'), 'Expected file found in merged tar');
+
+# Check the content is valid
+my $content = $merged_tar->get_content('TEST-BSP-1.json.gz');
+ok(length($content) > 0, 'File content is not empty');
+is(scalar($merged_tar->list_files()), 1, 'One file in tar');
+
+# Test with multiple jobs and multiple input files
+$call = join(
+  ' ',
+  'perl', $script,
+  'archive',
+  '--input' => 't/corpus/artificial',  # Use artificial test corpus
+  '--output' => $output . '_multi_files.tar',
+  '--cache' => $cache,
+  '-t' => 'Base#sentences',  # Use sentences.xml
+  '-m' => 'Sgbr',
+  '--to-tar',
+  '--gzip',
+  '--jobs' => 3
+);
+
+# Run multi-file test
+$combined = combined_from( sub { system($call) });
+
+like($combined, qr!Writing to file .+?\.tar!, 'Write out for multi-file');
+like($combined, qr!Merging 3 temporary tar files!, 'Merging correct number of temp files');
+like($combined, qr!Wrote to tar archive!, 'Write out');
+
+# Read the merged tar with --ignore-zeros
+my $multi_tar_file = $output . '_multi_files.tar';
+ok(-f $multi_tar_file, 'Multi-file tar exists');
+
+# Use Archive::Tar to read the merged tar
+my $multi_merged_tar = Archive::Tar->new;
+ok($multi_merged_tar->read($multi_tar_file, 1, {ignore_zeros => 1}), 'Can read multi-file tar with ignore_zeros');
+
+# Check that the file is in the tar
+my @files = $multi_merged_tar->list_files();
+my $found_files = join("\n", @files);
+
+like($found_files, qr/artificial\.json\.gz/, 'Contains artificial document');
 
 done_testing;
 __END__