#!/usr/bin/perl -w # Test that the way we use IO::File and IO::Zlib work as expected use strict; use File::Spec::Functions ':ALL'; BEGIN { $| = 1; $^W = 1; } use Test::More tests => 10; use Params::Util '_HANDLE'; use CPAN::Index; use CPAN::Index::Loader; # Test mirror my $MIRROR = catdir('t', 'mirror'); ok( -d $MIRROR, 'Mirror directory found' ); ##################################################################### # Create the loader my $loader = CPAN::Index::Loader->new( local_dir => $MIRROR ); isa_ok( $loader, 'CPAN::Index::Loader' ); # Test a file in the mirror sub test_file { my $file = shift; my $path = $loader->local_file($file); ok( -f $path, "Found test file $file" ); my $handle = $loader->local_handle($file); ok( _HANDLE($handle), '->local_handle($file) returns a _HANDLE ' ); # Pull the lines off it my $counter = 0; foreach ( 0 .. 100000 ) { # Infinite loop protection last unless defined $handle->getline; $counter++; } ok( $counter, "Got $counter lines from the $file handle" ); SKIP: { if ( $handle->isa('IO::Zlib') ) { skip("EOF known to fail for IO::Zlib (for now)", 1); } ok( $handle->eof, '->eof returns true at EOF' ); } } # Make sure both a regular and zipped file work test_file( 'files/test.txt' ); test_file( 'files/test.txt.gz' ); exit(0);