|
Packit |
0bf95d |
#!/usr/bin/perl
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# Github 11: "CRC or size mismatch" when extracting member second time
|
|
Packit |
0bf95d |
# Test for correct functionality to prevent regression
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use strict;
|
|
Packit |
0bf95d |
use warnings;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use Archive::Zip qw( :ERROR_CODES );
|
|
Packit |
0bf95d |
use File::Spec;
|
|
Packit |
0bf95d |
use File::Path;
|
|
Packit |
0bf95d |
use lib 't';
|
|
Packit |
0bf95d |
use common;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
use Test::More tests => 2;
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# create test env
|
|
Packit |
0bf95d |
my $GH_ISSUE = 'github11';
|
|
Packit |
0bf95d |
my $TEST_NAME = "20_bug_$GH_ISSUE";
|
|
Packit |
0bf95d |
my $TEST_DIR = File::Spec->catdir(TESTDIR, $TEST_NAME);
|
|
Packit |
0bf95d |
mkpath($TEST_DIR);
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# test 1
|
|
Packit |
0bf95d |
my $DATA_DIR = File::Spec->catfile('t', 'data');
|
|
Packit |
0bf95d |
my $GOOD_ZIP_FILE = File::Spec->catfile($DATA_DIR, "good_${GH_ISSUE}.zip");
|
|
Packit |
0bf95d |
my $GOOD_ZIP = Archive::Zip->new($GOOD_ZIP_FILE);
|
|
Packit |
0bf95d |
my $MEMBER_FILE = 'FILE';
|
|
Packit |
0bf95d |
my $member = $GOOD_ZIP->memberNamed($MEMBER_FILE);
|
|
Packit |
0bf95d |
my $OUT_FILE = File::Spec->catfile($TEST_DIR, "out");
|
|
Packit |
0bf95d |
# Extracting twice triggered the bug
|
|
Packit |
0bf95d |
$member->extractToFileNamed($OUT_FILE);
|
|
Packit |
0bf95d |
is($member->extractToFileNamed($OUT_FILE), AZ_OK, 'Testing known good zip');
|
|
Packit |
0bf95d |
|
|
Packit |
0bf95d |
# test 2
|
|
Packit |
0bf95d |
my $BAD_ZIP_FILE = File::Spec->catfile($DATA_DIR, "bad_${GH_ISSUE}.zip");
|
|
Packit |
0bf95d |
my $BAD_ZIP = Archive::Zip->new($BAD_ZIP_FILE);
|
|
Packit |
0bf95d |
$member = $BAD_ZIP->memberNamed($MEMBER_FILE);
|
|
Packit |
0bf95d |
# Extracting twice triggered the bug
|
|
Packit |
0bf95d |
$member->extractToFileNamed($OUT_FILE);
|
|
Packit |
0bf95d |
is($member->extractToFileNamed($OUT_FILE), AZ_OK, 'Testing known bad zip');
|