Blame t/23_closed_handle.t

Packit 0bf95d
#!/usr/bin/perl
Packit 0bf95d

Packit 0bf95d
# Test to make sure temporal filehandles created by Archive::Zip::tempFile are closed properly
Packit 0bf95d

Packit 0bf95d
use strict;
Packit 0bf95d
use warnings;
Packit 0bf95d

Packit 0bf95d
use Archive::Zip;
Packit 0bf95d
use Test::MockModule;
Packit 0bf95d

Packit 0bf95d
use Test::More tests => 2;
Packit 0bf95d

Packit 0bf95d
# array to store open filhandles
Packit 0bf95d
my @opened_filehandles;
Packit 0bf95d

Packit 0bf95d
# mocking File::Temp to store returned filehandles
Packit 0bf95d
my $mock_file_temp = Test::MockModule->new('File::Temp');
Packit 0bf95d

Packit 0bf95d
my $previous_tempfile_sub = \&File::Temp::tmpfile;
Packit 0bf95d
$mock_file_temp->mock(
Packit 0bf95d
    tempfile => sub {
Packit 0bf95d
        my ( $fh, $filename ) = $previous_tempfile_sub->(@_);
Packit 0bf95d
        push( @opened_filehandles, $fh );
Packit 0bf95d
        return ( $fh, $filename );
Packit 0bf95d
    }
Packit 0bf95d
);
Packit 0bf95d

Packit 0bf95d
# calling method
Packit 0bf95d
Archive::Zip::tempFile();
Packit 0bf95d

Packit 0bf95d
# testing filehandles are closed
Packit 0bf95d
ok( scalar @opened_filehandles == 1, "One filehandle was created" );
Packit 0bf95d
ok( !defined $opened_filehandles[0]
Packit 0bf95d
      || !defined fileno( $opened_filehandles[0] )
Packit 0bf95d
      || fileno( $opened_filehandles[0] ) == -1,
Packit 0bf95d
    "Filehandle is closed"
Packit 0bf95d
);
Packit 0bf95d