App-zipdetails

 view release on metacpan or  search on metacpan

t/002-main.t  view on Meta::CPAN

    ods
    par
    rock
    saz
    usdz
    war
    whl
    wmz
    xpi
    zip
    zipx

    doc
    docx
    docm

    ppt
    pptx
    pptm

    xls
    xlsx
    xlsm
    ) ;

my $exts = join "|",  @exts, map { "$_.zst" } @exts ;
my %skip_dirs = map { $_ => 1} qw( t/files/0010-apache-commons-compress/commons-compress-1.20 ) ;
my @failed = ();

$ENV{ZIPDETAILS_TESTHARNESS} = 1 ;

my $COVERAGE = '';

if ($ENV{ZIPDETAILS_COVERAGE})
{
    $COVERAGE = '-d:NYTProf' ;
    $ENV{NYTPROF}  = "blocks=1";
}

find(
        sub { $dirs{$File::Find::dir} = $_
                 if /\.($exts)$/i && ! $skip_dirs{ $File::Find::dir };
             },
             't/sanity', -e 't/files' ? 't/files' : ()
    );

for my $dir (sort keys %dirs)
{
    SKIP:
    {
        my $z = $dirs{$dir};
        my $zipfile = "$dir/$z";

        if (defined $ENV{ZIPDETAILS_TEST_MATCH})
        {
            # skip "Test '$dir' doesn't match ZIPDETAILS_TEST_MATCH/" . basename($zipfile), $tests_per_zip_full
            next
                unless $zipfile =~ /$ENV{ZIPDETAILS_TEST_MATCH}/;
        }

        # these tests fail - looks like a FORMAT issue
        skip "skipping", $tests_per_zip_full
            if $zipfile =~ m<0000-errors/encoding/bad-encode> && $] < 5.020;

        if ($z =~ /zst$/)
        {
            skip "ZSTD not available for test $dir/" . basename($zipfile), $tests_per_zip_full
                if ! $ZSTD;

            chdir $tempdir
                or die "cannot chdir: $!\n";

            $zipfile = $tempdir . '/' . $z;
            $zipfile =~ s/\.zst$//;
            system("$ZSTD -d -q -o $zipfile $HERE/$dir/$z") == 0
                or die "cannot unzstd: $!\n";

            chdir $HERE
                or die "cannot chdir: $!\n";
        }

        die "No zip file '$z' '$zipfile' in '$dir'"
            if ! -e $zipfile;

        my %controlData = parseControl($dir);

        # default options assume utf8
        my $options = '--encoding utf-8-strict --output-encoding utf8';

        if (-e "$dir/options" )
        {
            $options = readFile("$dir/options") ;
            $options =~ s/\n+/ /g;
        }

        # diag "OPTIONS [$options]";

        for my $opt1 ('', '-v')
        {
            for my $opt2 ('', '--scan', '--walk')
            {
                SKIP:
                for my $opt3 ('', '--redact')
                {
                    my $test = "$dir/" . basename($zipfile) . " $opt1 $opt2 $opt3";
                    diag "Testing $test" ;

                    my $ctlData = reconcileControl(\%controlData, $opt1, $opt2, $opt3);

                    my ($golden_stdout_name, $golden_stdout_file) = ($ctlData->{'stdout'}, "$dir/$ctlData->{stdout}");
                    my ($golden_stderr_name, $golden_stderr_file) = ($ctlData->{'stderr'}, "$dir/$ctlData->{stderr}");
                    my $exit_status = $ctlData->{'exit-status'};

                    my $golden_stdout = readOutFile($golden_stdout_file);
                    my $golden_stderr = readOutFile($golden_stderr_file);

                    zapGolden($golden_stdout);
                    zapGolden($golden_stderr);

                    if ($opt3 && $golden_stdout !~ /$opt3$/)
                    {



( run in 0.544 second using v1.01-cache-2.11-cpan-aadc1410aed )