Blame t/20_bug_github11.t

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');