blob: 70e7141088428d18aa289849078677b953480704 [file] [log] [blame]
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;
use IO::Compress::Gzip 'gzip' ;
BEGIN
{
plan(skip_all => "Examples needs Perl 5.005 or better - you have Perl $]" )
if $] < 5.005 ;
# use Test::NoWarnings, if available
my $extra = 0 ;
$extra = 1
if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
plan tests => 19 + $extra ;
}
my $Inc = join " ", map qq["-I$_"] => @INC;
$Inc = '"-MExtUtils::testlib"'
if ! $ENV{PERL_CORE} && eval " require ExtUtils::testlib; " ;
my $Perl = ($ENV{'FULLPERL'} or $^X or 'perl') ;
$Perl = qq["$Perl"] if $^O eq 'MSWin32' ;
$Perl = "$Perl $Inc -w" ;
#$Perl .= " -Mblib " ;
my $examples = $ENV{PERL_CORE} ? "../ext/IO-Compress/examples/io/gzip"
: "./examples/io/gzip";
my $hello1 = <<EOM ;
hello
this is
a test
message
x ttttt
xuuuuuu
the end
EOM
my @hello1 = grep(s/$/\n/, split(/\n/, $hello1)) ;
my $hello2 = <<EOM;
Howdy
this is the
second
file
x ppppp
xuuuuuu
really the end
EOM
my @hello2 = grep(s/$/\n/, split(/\n/, $hello2)) ;
my ($file1, $file2, $stderr) ;
my $lex = new LexFile $file1, $file2, $stderr ;
gzip \$hello1 => $file1 ;
gzip \$hello2 => $file2 ;
sub check
{
my $command = shift ;
my $expected = shift ;
my $lex = new LexFile my $stderr ;
my $cmd = "$command 2>$stderr";
my $stdout = `$cmd` ;
my $aok = 1 ;
$aok &= is $?, 0, " exit status is 0" ;
$aok &= is readFile($stderr), '', " no stderr" ;
$aok &= is $stdout, $expected, " expected content is ok"
if defined $expected ;
if (! $aok) {
diag "Command line: $cmd";
my ($file, $line) = (caller)[1,2];
diag "Test called from $file, line $line";
}
1 while unlink $stderr;
}
# gzcat
# #####
title "gzcat - command line" ;
check "$Perl ${examples}/gzcat $file1 $file2", $hello1 . $hello2;
title "gzcat - stdin" ;
check "$Perl ${examples}/gzcat <$file1 ", $hello1;
# gzgrep
# ######
title "gzgrep";
check "$Perl ${examples}/gzgrep the $file1 $file2",
join('', grep(/the/, @hello1, @hello2));
for ($file1, $file2, $stderr) { 1 while unlink $_ } ;
# gzstream
# ########
{
title "gzstream" ;
writeFile($file1, $hello1) ;
check "$Perl ${examples}/gzstream <$file1 >$file2";
title "gzcat" ;
check "$Perl ${examples}/gzcat $file2", $hello1 ;
}