BEGIN { if ($ENV{PERL_CORE}) { chdir 't' if -d 't'; @INC = ("../lib", "lib/compress"); } } use lib qw(t t/compress); use strict; use warnings; use bytes; use Test::More ; use CompTestUtils; my $GZIP ; sub ExternalGzipWorks { my $lex = new LexFile my $outfile; my $content = qq { Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut tempus odio id dolor. Camelus perlus. Larrius in lumen numen. Dolor en quiquum filia est. Quintus cenum parat. }; writeWithGzip($outfile, $content) or return 0; my $got ; readWithGzip($outfile, $got) or return 0; if ($content ne $got) { diag "Uncompressed content is wrong"; return 0 ; } return 1 ; } sub readWithGzip { my $file = shift ; my $lex = new LexFile my $outfile; my $comp = "$GZIP -dc" ; if ( system("$comp $file >$outfile") == 0 ) { $_[0] = readFile($outfile); return 1 } diag "'$comp' failed: $?"; return 0 ; } sub getGzipInfo { my $file = shift ; } sub writeWithGzip { my $file = shift ; my $content = shift ; my $options = shift || ''; my $lex = new LexFile my $infile; writeFile($infile, $content); unlink $file ; my $comp = "$GZIP -c $options $infile >$file" ; return 1 if system($comp) == 0 ; diag "'$comp' failed: $?"; return 0 ; } BEGIN { # Check external gzip is available my $name = $^O =~ /mswin/i ? 'gzip.exe' : 'gzip'; my $split = $^O =~ /mswin/i ? ";" : ":"; for my $dir (reverse split $split, $ENV{PATH}) { $GZIP = "$dir/$name" if -x "$dir/$name" ; } plan(skip_all => "Cannot find $name") if ! $GZIP ; plan(skip_all => "$name doesn't work as expected") if ! ExternalGzipWorks(); # use Test::NoWarnings, if available my $extra = 0 ; $extra = 1 if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; plan tests => 7 + $extra ; use_ok('IO::Compress::Gzip', ':all') ; use_ok('IO::Uncompress::Gunzip', ':all') ; } { title "Test interop with $GZIP" ; my $file; my $file1; my $lex = new LexFile $file, $file1; my $content = qq { Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut tempus odio id dolor. Camelus perlus. Larrius in lumen numen. Dolor en quiquum filia est. Quintus cenum parat. }; my $got; ok writeWithGzip($file, $content), "writeWithGzip ok"; gunzip $file => \$got ; is $got, $content, "got content"; gzip \$content => $file1; $got = ''; ok readWithGzip($file1, $got), "readWithGzip ok"; is $got, $content, "got content"; }