9 #use lib qw(t t/compress);
39 # autogenerate the name unless if none supplied
40 $_ = "tst" . $index ++ . ".tmp"
44 for (@_) { 1 while unlink $_ } ;
51 chmod 0777, @{ $self } ;
52 for (@$self) { 1 while unlink $_ } ;
64 foreach (@_) { rmtree $_ }
71 foreach (@$self) { rmtree $_ }
80 if (IO::Compress::Base::Common::isaFilehandle($f))
90 or croak "Cannot open $f: $!\n" ;
96 return @strings if wantarray ;
97 return join "", @strings ;
102 foreach (@_) { writeFile($_, '') }
107 my($filename, @strings) = @_ ;
108 1 while unlink $filename ;
109 open (F, ">$filename")
110 or croak "Cannot open $filename: $!\n" ;
121 my ($filename) = shift ;
125 my $fil = gzopen($filename, "rb")
126 or croak "Cannopt open '$filename': $Compress::Zlib::gzerrno" ;
129 while $fil->gzread($line) > 0;
139 if (IO::Compress::Base::Common::isaFilehandle($d))
143 elsif (IO::Compress::Base::Common::isaFilename($d))
154 $d = '' unless defined $d ;
155 #while (read(STDIN, $data, 16)) {
156 while (my $data = substr($d, 0, 16)) {
157 substr($d, 0, 16) = '' ;
158 printf "# %8.8lx ", $offset;
161 my @array = unpack('C*', $data);
163 printf('%2.2x ', $_);
165 print " " x (16 - @array)
167 $data =~ tr/\0-\37\177-\377/./;
182 ok my $x = new IO::Compress::Gzip $name, %opts
183 or diag "GzipError is $IO::Compress::Gzip::GzipError" ;
184 ok $x->write($string) ;
187 #is GZreadFile($name), $string ;
189 ok my $gunz = new IO::Uncompress::Gunzip $name, Strict => 0
190 or diag "GunzipError is $IO::Uncompress::Gunzip::GunzipError" ;
191 ok my $hdr = $gunz->getHeaderInfo();
193 ok $gunz->read($uncomp) ;
194 ok $uncomp eq $string;
202 my ($filename, $uue) = @_ ;
203 return readFile($filename) eq unpack("u", $uue) ;
209 my %raw = map { $_ => 1 } qw( RawDeflate );
211 return defined $raw{$class};
216 my $compWith = shift ;
219 my %mapping = ( 'IO::Compress::Gzip' => 'IO::Uncompress::Gunzip',
220 'IO::Compress::Gzip::gzip' => 'IO::Uncompress::Gunzip',
221 'IO::Compress::Deflate' => 'IO::Uncompress::Inflate',
222 'IO::Compress::Deflate::deflate' => 'IO::Uncompress::Inflate',
223 'IO::Compress::RawDeflate' => 'IO::Uncompress::RawInflate',
224 'IO::Compress::RawDeflate::rawdeflate' => 'IO::Uncompress::RawInflate',
225 'IO::Compress::Bzip2' => 'IO::Uncompress::Bunzip2',
226 'IO::Compress::Bzip2::bzip2' => 'IO::Uncompress::Bunzip2',
227 'IO::Compress::Zip' => 'IO::Uncompress::Unzip',
228 'IO::Compress::Zip::zip' => 'IO::Uncompress::Unzip',
229 'IO::Compress::Lzop' => 'IO::Uncompress::UnLzop',
230 'IO::Compress::Lzop::lzop' => 'IO::Uncompress::UnLzop',
231 'IO::Compress::Lzf' => 'IO::Uncompress::UnLzf' ,
232 'IO::Compress::Lzf::lzf' => 'IO::Uncompress::UnLzf',
233 'IO::Compress::PPMd' => 'IO::Uncompress::UnPPMd' ,
234 'IO::Compress::PPMd::ppmd' => 'IO::Uncompress::UnPPMd',
235 'IO::Compress::DummyComp' => 'IO::Uncompress::DummyUncomp',
236 'IO::Compress::DummyComp::dummycomp' => 'IO::Uncompress::DummyUncomp',
240 my $obj = $mapping{$compWith}->new( \$buffer, -Append => 1);
241 1 while $obj->read($out) > 0 ;
246 my %ErrorMap = ( 'IO::Compress::Gzip' => \$IO::Compress::Gzip::GzipError,
247 'IO::Compress::Gzip::gzip' => \$IO::Compress::Gzip::GzipError,
248 'IO::Uncompress::Gunzip' => \$IO::Uncompress::Gunzip::GunzipError,
249 'IO::Uncompress::Gunzip::gunzip' => \$IO::Uncompress::Gunzip::GunzipError,
250 'IO::Uncompress::Inflate' => \$IO::Uncompress::Inflate::InflateError,
251 'IO::Uncompress::Inflate::inflate' => \$IO::Uncompress::Inflate::InflateError,
252 'IO::Compress::Deflate' => \$IO::Compress::Deflate::DeflateError,
253 'IO::Compress::Deflate::deflate' => \$IO::Compress::Deflate::DeflateError,
254 'IO::Uncompress::RawInflate' => \$IO::Uncompress::RawInflate::RawInflateError,
255 'IO::Uncompress::RawInflate::rawinflate' => \$IO::Uncompress::RawInflate::RawInflateError,
256 'IO::Uncompress::AnyInflate' => \$IO::Uncompress::AnyInflate::AnyInflateError,
257 'IO::Uncompress::AnyInflate::anyinflate' => \$IO::Uncompress::AnyInflate::AnyInflateError,
258 'IO::Uncompress::AnyUncompress' => \$IO::Uncompress::AnyUncompress::AnyUncompressError,
259 'IO::Uncompress::AnyUncompress::anyUncompress' => \$IO::Uncompress::AnyUncompress::AnyUncompressError,
260 'IO::Compress::RawDeflate' => \$IO::Compress::RawDeflate::RawDeflateError,
261 'IO::Compress::RawDeflate::rawdeflate' => \$IO::Compress::RawDeflate::RawDeflateError,
262 'IO::Compress::Bzip2' => \$IO::Compress::Bzip2::Bzip2Error,
263 'IO::Compress::Bzip2::bzip2' => \$IO::Compress::Bzip2::Bzip2Error,
264 'IO::Uncompress::Bunzip2' => \$IO::Uncompress::Bunzip2::Bunzip2Error,
265 'IO::Uncompress::Bunzip2::bunzip2' => \$IO::Uncompress::Bunzip2::Bunzip2Error,
266 'IO::Compress::Zip' => \$IO::Compress::Zip::ZipError,
267 'IO::Compress::Zip::zip' => \$IO::Compress::Zip::ZipError,
268 'IO::Uncompress::Unzip' => \$IO::Uncompress::Unzip::UnzipError,
269 'IO::Uncompress::Unzip::unzip' => \$IO::Uncompress::Unzip::UnzipError,
270 'IO::Compress::Lzop' => \$IO::Compress::Lzop::LzopError,
271 'IO::Compress::Lzop::lzop' => \$IO::Compress::Lzop::LzopError,
272 'IO::Uncompress::UnLzop' => \$IO::Uncompress::UnLzop::UnLzopError,
273 'IO::Uncompress::UnLzop::unlzop' => \$IO::Uncompress::UnLzop::UnLzopError,
274 'IO::Compress::Lzf' => \$IO::Compress::Lzf::LzfError,
275 'IO::Compress::Lzf::lzf' => \$IO::Compress::Lzf::LzfError,
276 'IO::Uncompress::UnLzf' => \$IO::Uncompress::UnLzf::UnLzfError,
277 'IO::Uncompress::UnLzf::unlzf' => \$IO::Uncompress::UnLzf::UnLzfError,
278 'IO::Compress::PPMd' => \$IO::Compress::PPMd::PPMdError,
279 'IO::Compress::PPMd::ppmd' => \$IO::Compress::PPMd::PPMdError,
280 'IO::Uncompress::UnPPMd' => \$IO::Uncompress::UnPPMd::UnPPMdError,
281 'IO::Uncompress::UnPPMd::unppmd' => \$IO::Uncompress::UnPPMd::UnPPMdError,
283 'IO::Compress::DummyComp' => \$IO::Compress::DummyComp::DummyCompError,
284 'IO::Compress::DummyComp::dummycomp'=> \$IO::Compress::DummyComp::DummyCompError,
285 'IO::Uncompress::DummyUncomp' => \$IO::Uncompress::DummyUncomp::DummyUncompError,
286 'IO::Uncompress::DummyUncomp::dummyuncomp' => \$IO::Uncompress::DummyUncomp::DummyUncompError,
289 my %TopFuncMap = ( 'IO::Compress::Gzip' => 'IO::Compress::Gzip::gzip',
290 'IO::Uncompress::Gunzip' => 'IO::Uncompress::Gunzip::gunzip',
292 'IO::Compress::Deflate' => 'IO::Compress::Deflate::deflate',
293 'IO::Uncompress::Inflate' => 'IO::Uncompress::Inflate::inflate',
295 'IO::Compress::RawDeflate' => 'IO::Compress::RawDeflate::rawdeflate',
296 'IO::Uncompress::RawInflate' => 'IO::Uncompress::RawInflate::rawinflate',
298 'IO::Uncompress::AnyInflate' => 'IO::Uncompress::AnyInflate::anyinflate',
299 'IO::Uncompress::AnyUncompress' => 'IO::Uncompress::AnyUncompress::anyuncompress',
301 'IO::Compress::Bzip2' => 'IO::Compress::Bzip2::bzip2',
302 'IO::Uncompress::Bunzip2' => 'IO::Uncompress::Bunzip2::bunzip2',
304 'IO::Compress::Zip' => 'IO::Compress::Zip::zip',
305 'IO::Uncompress::Unzip' => 'IO::Uncompress::Unzip::unzip',
306 'IO::Compress::Lzop' => 'IO::Compress::Lzop::lzop',
307 'IO::Uncompress::UnLzop' => 'IO::Uncompress::UnLzop::unlzop',
308 'IO::Compress::Lzf' => 'IO::Compress::Lzf::lzf',
309 'IO::Uncompress::UnLzf' => 'IO::Uncompress::UnLzf::unlzf',
310 'IO::Compress::PPMd' => 'IO::Compress::PPMd::ppmd',
311 'IO::Uncompress::UnPPMd' => 'IO::Uncompress::UnPPMd::unppmd',
312 'IO::Compress::DummyComp' => 'IO::Compress::DummyComp::dummyuncomp',
313 'IO::Uncompress::DummyUncomp' => 'IO::Uncompress::DummyUncomp::dummyuncomp',
316 %TopFuncMap = map { ($_ => $TopFuncMap{$_},
317 $TopFuncMap{$_} => $TopFuncMap{$_}) }
320 #%TopFuncMap = map { ($_ => \&{ $TopFuncMap{$_} ) }
324 my %inverse = ( 'IO::Compress::Gzip' => 'IO::Uncompress::Gunzip',
325 'IO::Compress::Gzip::gzip' => 'IO::Uncompress::Gunzip::gunzip',
326 'IO::Compress::Deflate' => 'IO::Uncompress::Inflate',
327 'IO::Compress::Deflate::deflate' => 'IO::Uncompress::Inflate::inflate',
328 'IO::Compress::RawDeflate' => 'IO::Uncompress::RawInflate',
329 'IO::Compress::RawDeflate::rawdeflate' => 'IO::Uncompress::RawInflate::rawinflate',
330 'IO::Compress::Bzip2::bzip2' => 'IO::Uncompress::Bunzip2::bunzip2',
331 'IO::Compress::Bzip2' => 'IO::Uncompress::Bunzip2',
332 'IO::Compress::Zip::zip' => 'IO::Uncompress::Unzip::unzip',
333 'IO::Compress::Zip' => 'IO::Uncompress::Unzip',
334 'IO::Compress::Lzop::lzop' => 'IO::Uncompress::UnLzop::unlzop',
335 'IO::Compress::Lzop' => 'IO::Uncompress::UnLzop',
336 'IO::Compress::Lzf::lzf' => 'IO::Uncompress::UnLzf::unlzf',
337 'IO::Compress::Lzf' => 'IO::Uncompress::UnLzf',
338 'IO::Compress::PPMd::ppmd' => 'IO::Uncompress::UnPPMd::unppmd',
339 'IO::Compress::PPMd' => 'IO::Uncompress::UnPPMd',
340 'IO::Compress::DummyComp::dummycomp' => 'IO::Uncompress::DummyUncomp::dummyuncomp',
341 'IO::Compress::DummyComp' => 'IO::Uncompress::DummyUncomp',
344 %inverse = map { ($_ => $inverse{$_}, $inverse{$_} => $_) } keys %inverse;
350 return $inverse{$class} ;
357 return $ErrorMap{$class} ;
364 return \&{ $TopFuncMap{$class} } ;
371 return $TopFuncMap{$class} ;
376 my $compWith = shift ;
379 my %mapping = ( 'IO::Uncompress::Gunzip' => 'IO::Compress::Gzip',
380 'IO::Uncompress::Gunzip::gunzip' => 'IO::Compress::Gzip',
381 'IO::Uncompress::Inflate' => 'IO::Compress::Deflate',
382 'IO::Uncompress::Inflate::inflate' => 'IO::Compress::Deflate',
383 'IO::Uncompress::RawInflate' => 'IO::Compress::RawDeflate',
384 'IO::Uncompress::RawInflate::rawinflate' => 'IO::Compress::RawDeflate',
385 'IO::Uncompress::Bunzip2' => 'IO::Compress::Bzip2',
386 'IO::Uncompress::Bunzip2::bunzip2' => 'IO::Compress::Bzip2',
387 'IO::Uncompress::Unzip' => 'IO::Compress::Zip',
388 'IO::Uncompress::Unzip::unzip' => 'IO::Compress::Zip',
389 'IO::Uncompress::UnLzop' => 'IO::Compress::Lzop',
390 'IO::Uncompress::UnLzop::unlzop' => 'IO::Compress::Lzop',
391 'IO::Uncompress::UnLzp' => 'IO::Compress::Lzf',
392 'IO::Uncompress::UnLzf::unlzf' => 'IO::Compress::Lzf',
393 'IO::Uncompress::UnPPMd' => 'IO::Compress::PPMd',
394 'IO::Uncompress::UnPPMd::unppmd' => 'IO::Compress::PPMd',
395 'IO::Uncompress::AnyInflate' => 'IO::Compress::Gzip',
396 'IO::Uncompress::AnyInflate::anyinflate' => 'IO::Compress::Gzip',
397 'IO::Uncompress::AnyUncompress' => 'IO::Compress::Gzip',
398 'IO::Uncompress::AnyUncompress::anyuncompress' => 'IO::Compress::Gzip',
399 'IO::Uncompress::DummyUncomp' => 'IO::Compress::DummyComp',
400 'IO::Uncompress::DummyUncomp::dummyuncomp'=> 'IO::Compress::DummyComp',
404 my $obj = $mapping{$compWith}->new( \$out);
405 $obj->write($buffer) ;
410 our ($AnyUncompressError);
413 eval ' use IO::Uncompress::AnyUncompress qw($AnyUncompressError); ';
422 if (ref $buffer && ref $buffer eq 'ARRAY')
425 $buffer = shift @opts;
430 croak "buffer is undef" unless defined $$buffer;
431 croak "buffer is empty" unless length $$buffer;
437 if (IO::Compress::Base::Common::isaFilehandle($buffer))
439 $data = readFile($buffer);
441 elsif (IO::Compress::Base::Common::isaFilename($buffer))
443 $data = readFile($buffer);
450 if (defined $already && length $already)
453 my $got = substr($data, 0, length($already));
454 substr($data, 0, length($already)) = '';
456 is $got, $already, ' Already OK' ;
460 my $o = new IO::Uncompress::AnyUncompress \$data,
465 or croak "Cannot open buffer/file: $AnyUncompressError" ;
467 1 while $o->read($out) > 0 ;
469 croak "Error uncompressing -- " . $o->error()
482 if (ref $buffer && ref $buffer eq 'ARRAY')
485 $buffer = shift @opts;
490 croak "buffer is undef" unless defined $$buffer;
491 croak "buffer is empty" unless length $$buffer;
497 if (IO::Compress::Base::Common::isaFilehandle($buffer))
499 $data = readFile($buffer);
501 elsif (IO::Compress::Base::Common::isaFilename($buffer))
503 $data = readFile($buffer);
510 if (defined $already && length $already)
513 my $got = substr($data, 0, length($already));
514 substr($data, 0, length($already)) = '';
516 is $got, $already, ' Already OK' ;
520 my $o = new IO::Uncompress::AnyUncompress \$data,
526 or croak "Cannot open buffer/file: $AnyUncompressError" ;
528 1 while $o->read($out) > 0 ;
530 croak "Error uncompressing -- " . $o->error()
533 return ($o->getHeaderInfo()) ;
541 my $Error = getErrorRef($class);
546 if ($class eq 'IO::Compress::Gzip') {
549 Comment => "a comment",
550 ExtraField => ['ab' => "extra"],
553 elsif ($class eq 'IO::Compress::Zip'){
556 Comment => "a comment",
557 ZipComment => "last comment",
558 exTime => [100, 200, 300],
559 ExtraFieldLocal => ["ab" => "extra1"],
560 ExtraFieldCentral => ["cd" => "extra2"],
564 my $z = new $class( \$buffer, %params)
565 or croak "Cannot create $class object: $$Error";
569 my $unc = getInverse($class);
570 anyUncompress(\$buffer) eq $data
571 or die "bad bad bad";
572 my $u = new $unc( \$buffer);
573 my $info = $u->getHeaderInfo() ;
576 return wantarray ? ($info, $buffer) : $buffer ;
582 my ($dummy, $file, $line) = caller ;
585 $file = quotemeta($file);
587 return "/$string\\s+at $file line $line/" if $] >= 5.006 ;
588 return "/$string\\s+at /" ;
595 return "/$string\\s+at \\(eval /" if $] > 5.006 ;
596 return "/$string\\s+at /" ;
603 my ($dummy, $file, $line) = caller ;
607 print "#\n# dumpOBJ from $file line $line @_\n" ;
611 print "#\n# dumpOBJ from $file line $line \n" ;
615 foreach my $k (keys %{ *$obj })
617 $max = length $k if length $k > $max ;
620 foreach my $k (sort keys %{ *$obj })
623 $v = '-undef-' unless defined $v;
624 my $pad = ' ' x ($max - length($k) + 2) ;
625 print "# $k$pad: [$v]\n";
635 return (0,0) if $class =~ /lzf/i;
642 eval ' use Scalar::Util "dualvar" ';
646 package CompTestUtils;
653 t/compress/CompTestUtils.pm
656 t/compress/destroy.pl
657 t/compress/generic.pl
660 t/compress/newtied.pl
661 t/compress/oneshot.pl
664 t/compress/truncate.pl
665 t/compress/zlib-generic.plParsing config.in...
666 Building Zlib enabled
667 Auto Detect Gzip OS Code..
668 Setting Gzip OS Code to 3 [Unix/Default]