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) ;
208 my $compWith = shift ;
211 my %mapping = ( 'IO::Compress::Gzip' => 'IO::Uncompress::Gunzip',
212 'IO::Compress::Gzip::gzip' => 'IO::Uncompress::Gunzip',
213 'IO::Compress::Deflate' => 'IO::Uncompress::Inflate',
214 'IO::Compress::Deflate::deflate' => 'IO::Uncompress::Inflate',
215 'IO::Compress::RawDeflate' => 'IO::Uncompress::RawInflate',
216 'IO::Compress::RawDeflate::rawdeflate' => 'IO::Uncompress::RawInflate',
217 'IO::Compress::Bzip2' => 'IO::Uncompress::Bunzip2',
218 'IO::Compress::Bzip2::bzip2' => 'IO::Uncompress::Bunzip2',
219 'IO::Compress::Zip' => 'IO::Uncompress::Unzip',
220 'IO::Compress::Zip::zip' => 'IO::Uncompress::Unzip',
221 'IO::Compress::Lzop' => 'IO::Uncompress::UnLzop',
222 'IO::Compress::Lzop::lzop' => 'IO::Uncompress::UnLzop',
223 'IO::Compress::Lzf' => 'IO::Uncompress::UnLzf' ,
224 'IO::Compress::Lzf::lzf' => 'IO::Uncompress::UnLzf',
225 'IO::Compress::DummyComp' => 'IO::Uncompress::DummyUncomp',
226 'IO::Compress::DummyComp::dummycomp' => 'IO::Uncompress::DummyUncomp',
230 my $obj = $mapping{$compWith}->new( \$buffer, -Append => 1);
231 1 while $obj->read($out) > 0 ;
236 my %ErrorMap = ( 'IO::Compress::Gzip' => \$IO::Compress::Gzip::GzipError,
237 'IO::Compress::Gzip::gzip' => \$IO::Compress::Gzip::GzipError,
238 'IO::Uncompress::Gunzip' => \$IO::Uncompress::Gunzip::GunzipError,
239 'IO::Uncompress::Gunzip::gunzip' => \$IO::Uncompress::Gunzip::GunzipError,
240 'IO::Uncompress::Inflate' => \$IO::Uncompress::Inflate::InflateError,
241 'IO::Uncompress::Inflate::inflate' => \$IO::Uncompress::Inflate::InflateError,
242 'IO::Compress::Deflate' => \$IO::Compress::Deflate::DeflateError,
243 'IO::Compress::Deflate::deflate' => \$IO::Compress::Deflate::DeflateError,
244 'IO::Uncompress::RawInflate' => \$IO::Uncompress::RawInflate::RawInflateError,
245 'IO::Uncompress::RawInflate::rawinflate' => \$IO::Uncompress::RawInflate::RawInflateError,
246 'IO::Uncompress::AnyInflate' => \$IO::Uncompress::AnyInflate::AnyInflateError,
247 'IO::Uncompress::AnyInflate::anyinflate' => \$IO::Uncompress::AnyInflate::AnyInflateError,
248 'IO::Uncompress::AnyUncompress' => \$IO::Uncompress::AnyUncompress::AnyUncompressError,
249 'IO::Uncompress::AnyUncompress::anyUncompress' => \$IO::Uncompress::AnyUncompress::AnyUncompressError,
250 'IO::Compress::RawDeflate' => \$IO::Compress::RawDeflate::RawDeflateError,
251 'IO::Compress::RawDeflate::rawdeflate' => \$IO::Compress::RawDeflate::RawDeflateError,
252 'IO::Compress::Bzip2' => \$IO::Compress::Bzip2::Bzip2Error,
253 'IO::Compress::Bzip2::bzip2' => \$IO::Compress::Bzip2::Bzip2Error,
254 'IO::Uncompress::Bunzip2' => \$IO::Uncompress::Bunzip2::Bunzip2Error,
255 'IO::Uncompress::Bunzip2::bunzip2' => \$IO::Uncompress::Bunzip2::Bunzip2Error,
256 'IO::Compress::Zip' => \$IO::Compress::Zip::ZipError,
257 'IO::Compress::Zip::zip' => \$IO::Compress::Zip::ZipError,
258 'IO::Uncompress::Unzip' => \$IO::Uncompress::Unzip::UnzipError,
259 'IO::Uncompress::Unzip::unzip' => \$IO::Uncompress::Unzip::UnzipError,
260 'IO::Compress::Lzop' => \$IO::Compress::Lzop::LzopError,
261 'IO::Compress::Lzop::lzop' => \$IO::Compress::Lzop::LzopError,
262 'IO::Uncompress::UnLzop' => \$IO::Uncompress::UnLzop::UnLzopError,
263 'IO::Uncompress::UnLzop::unlzop' => \$IO::Uncompress::UnLzop::UnLzopError,
264 'IO::Compress::Lzf' => \$IO::Compress::Lzf::LzfError,
265 'IO::Compress::Lzf::lzf' => \$IO::Compress::Lzf::LzfError,
266 'IO::Uncompress::UnLzf' => \$IO::Uncompress::UnLzf::UnLzfError,
267 'IO::Uncompress::UnLzf::unlzf' => \$IO::Uncompress::UnLzf::UnLzfError,
269 'IO::Compress::DummyComp' => \$IO::Compress::DummyComp::DummyCompError,
270 'IO::Compress::DummyComp::dummycomp'=> \$IO::Compress::DummyComp::DummyCompError,
271 'IO::Uncompress::DummyUncomp' => \$IO::Uncompress::DummyUncomp::DummyUncompError,
272 'IO::Uncompress::DummyUncomp::dummyuncomp' => \$IO::Uncompress::DummyUncomp::DummyUncompError,
275 my %TopFuncMap = ( 'IO::Compress::Gzip' => 'IO::Compress::Gzip::gzip',
276 'IO::Uncompress::Gunzip' => 'IO::Uncompress::Gunzip::gunzip',
278 'IO::Compress::Deflate' => 'IO::Compress::Deflate::deflate',
279 'IO::Uncompress::Inflate' => 'IO::Uncompress::Inflate::inflate',
281 'IO::Compress::RawDeflate' => 'IO::Compress::RawDeflate::rawdeflate',
282 'IO::Uncompress::RawInflate' => 'IO::Uncompress::RawInflate::rawinflate',
284 'IO::Uncompress::AnyInflate' => 'IO::Uncompress::AnyInflate::anyinflate',
285 'IO::Uncompress::AnyUncompress' => 'IO::Uncompress::AnyUncompress::anyuncompress',
287 'IO::Compress::Bzip2' => 'IO::Compress::Bzip2::bzip2',
288 'IO::Uncompress::Bunzip2' => 'IO::Uncompress::Bunzip2::bunzip2',
290 'IO::Compress::Zip' => 'IO::Compress::Zip::zip',
291 'IO::Uncompress::Unzip' => 'IO::Uncompress::Unzip::unzip',
292 'IO::Compress::Lzop' => 'IO::Compress::Lzop::lzop',
293 'IO::Uncompress::UnLzop' => 'IO::Uncompress::UnLzop::unlzop',
294 'IO::Compress::Lzf' => 'IO::Compress::Lzf::lzf',
295 'IO::Uncompress::UnLzf' => 'IO::Uncompress::UnLzf::unlzf',
296 'IO::Compress::DummyComp' => 'IO::Compress::DummyComp::dummyuncomp',
297 'IO::Uncompress::DummyUncomp' => 'IO::Uncompress::DummyUncomp::dummyuncomp',
300 %TopFuncMap = map { ($_ => $TopFuncMap{$_},
301 $TopFuncMap{$_} => $TopFuncMap{$_}) }
304 #%TopFuncMap = map { ($_ => \&{ $TopFuncMap{$_} ) }
308 my %inverse = ( 'IO::Compress::Gzip' => 'IO::Uncompress::Gunzip',
309 'IO::Compress::Gzip::gzip' => 'IO::Uncompress::Gunzip::gunzip',
310 'IO::Compress::Deflate' => 'IO::Uncompress::Inflate',
311 'IO::Compress::Deflate::deflate' => 'IO::Uncompress::Inflate::inflate',
312 'IO::Compress::RawDeflate' => 'IO::Uncompress::RawInflate',
313 'IO::Compress::RawDeflate::rawdeflate' => 'IO::Uncompress::RawInflate::rawinflate',
314 'IO::Compress::Bzip2::bzip2' => 'IO::Uncompress::Bunzip2::bunzip2',
315 'IO::Compress::Bzip2' => 'IO::Uncompress::Bunzip2',
316 'IO::Compress::Zip::zip' => 'IO::Uncompress::Unzip::unzip',
317 'IO::Compress::Zip' => 'IO::Uncompress::Unzip',
318 'IO::Compress::Lzop::lzop' => 'IO::Uncompress::UnLzop::unlzop',
319 'IO::Compress::Lzop' => 'IO::Uncompress::UnLzop',
320 'IO::Compress::Lzf::lzf' => 'IO::Uncompress::UnLzf::unlzf',
321 'IO::Compress::Lzf' => 'IO::Uncompress::UnLzf',
322 'IO::Compress::DummyComp::dummycomp' => 'IO::Uncompress::DummyUncomp::dummyuncomp',
323 'IO::Compress::DummyComp' => 'IO::Uncompress::DummyUncomp',
326 %inverse = map { ($_ => $inverse{$_}, $inverse{$_} => $_) } keys %inverse;
332 return $inverse{$class} ;
339 return $ErrorMap{$class} ;
346 return \&{ $TopFuncMap{$class} } ;
353 return $TopFuncMap{$class} ;
358 my $compWith = shift ;
361 my %mapping = ( 'IO::Uncompress::Gunzip' => 'IO::Compress::Gzip',
362 'IO::Uncompress::Gunzip::gunzip' => 'IO::Compress::Gzip',
363 'IO::Uncompress::Inflate' => 'IO::Compress::Deflate',
364 'IO::Uncompress::Inflate::inflate' => 'IO::Compress::Deflate',
365 'IO::Uncompress::RawInflate' => 'IO::Compress::RawDeflate',
366 'IO::Uncompress::RawInflate::rawinflate' => 'IO::Compress::RawDeflate',
367 'IO::Uncompress::Bunzip2' => 'IO::Compress::Bzip2',
368 'IO::Uncompress::Bunzip2::bunzip2' => 'IO::Compress::Bzip2',
369 'IO::Uncompress::Unzip' => 'IO::Compress::Zip',
370 'IO::Uncompress::Unzip::unzip' => 'IO::Compress::Zip',
371 'IO::Uncompress::UnLzop' => 'IO::Compress::Lzop',
372 'IO::Uncompress::UnLzop::unlzop' => 'IO::Compress::Lzop',
373 'IO::Uncompress::UnLzp' => 'IO::Compress::Lzf',
374 'IO::Uncompress::UnLzf::unlzf' => 'IO::Compress::Lzf',
375 'IO::Uncompress::AnyInflate' => 'IO::Compress::Gzip',
376 'IO::Uncompress::AnyInflate::anyinflate' => 'IO::Compress::Gzip',
377 'IO::Uncompress::AnyUncompress' => 'IO::Compress::Gzip',
378 'IO::Uncompress::AnyUncompress::anyuncompress' => 'IO::Compress::Gzip',
379 'IO::Uncompress::DummyUncomp' => 'IO::Compress::DummyComp',
380 'IO::Uncompress::DummyUncomp::dummyuncomp'=> 'IO::Compress::DummyComp',
384 my $obj = $mapping{$compWith}->new( \$out);
385 $obj->write($buffer) ;
390 our ($AnyUncompressError);
393 eval ' use IO::Uncompress::AnyUncompress qw($AnyUncompressError); ';
402 if (ref $buffer && ref $buffer eq 'ARRAY')
405 $buffer = shift @opts;
410 croak "buffer is undef" unless defined $$buffer;
411 croak "buffer is empty" unless length $$buffer;
417 if (IO::Compress::Base::Common::isaFilehandle($buffer))
419 $data = readFile($buffer);
421 elsif (IO::Compress::Base::Common::isaFilename($buffer))
423 $data = readFile($buffer);
430 if (defined $already && length $already)
433 my $got = substr($data, 0, length($already));
434 substr($data, 0, length($already)) = '';
436 is $got, $already, ' Already OK' ;
440 my $o = new IO::Uncompress::AnyUncompress \$data,
445 or croak "Cannot open buffer/file: $AnyUncompressError" ;
447 1 while $o->read($out) > 0 ;
449 croak "Error uncompressing -- " . $o->error()
462 if (ref $buffer && ref $buffer eq 'ARRAY')
465 $buffer = shift @opts;
470 croak "buffer is undef" unless defined $$buffer;
471 croak "buffer is empty" unless length $$buffer;
477 if (IO::Compress::Base::Common::isaFilehandle($buffer))
479 $data = readFile($buffer);
481 elsif (IO::Compress::Base::Common::isaFilename($buffer))
483 $data = readFile($buffer);
490 if (defined $already && length $already)
493 my $got = substr($data, 0, length($already));
494 substr($data, 0, length($already)) = '';
496 is $got, $already, ' Already OK' ;
500 my $o = new IO::Uncompress::AnyUncompress \$data,
506 or croak "Cannot open buffer/file: $AnyUncompressError" ;
508 1 while $o->read($out) > 0 ;
510 croak "Error uncompressing -- " . $o->error()
513 return ($o->getHeaderInfo()) ;
521 my $Error = getErrorRef($class);
526 if ($class eq 'IO::Compress::Gzip') {
529 Comment => "a comment",
530 ExtraField => ['ab' => "extra"],
533 elsif ($class eq 'IO::Compress::Zip'){
536 Comment => "a comment",
537 ZipComment => "last comment",
538 exTime => [100, 200, 300],
539 ExtraFieldLocal => ["ab" => "extra1"],
540 ExtraFieldCentral => ["cd" => "extra2"],
544 my $z = new $class( \$buffer, %params)
545 or croak "Cannot create $class object: $$Error";
549 my $unc = getInverse($class);
550 anyUncompress(\$buffer) eq $data
551 or die "bad bad bad";
552 my $u = new $unc( \$buffer);
553 my $info = $u->getHeaderInfo() ;
556 return wantarray ? ($info, $buffer) : $buffer ;
562 my ($dummy, $file, $line) = caller ;
565 $file = quotemeta($file);
567 return "/$string\\s+at $file line $line/" if $] >= 5.006 ;
568 return "/$string\\s+at /" ;
575 return "/$string\\s+at \\(eval /" if $] > 5.006 ;
576 return "/$string\\s+at /" ;
583 my ($dummy, $file, $line) = caller ;
587 print "#\n# dumpOBJ from $file line $line @_\n" ;
591 print "#\n# dumpOBJ from $file line $line \n" ;
595 foreach my $k (keys %{ *$obj })
597 $max = length $k if length $k > $max ;
600 foreach my $k (sort keys %{ *$obj })
603 $v = '-undef-' unless defined $v;
604 my $pad = ' ' x ($max - length($k) + 2) ;
605 print "# $k$pad: [$v]\n";
615 return (0,0) if $class =~ /lzf/i;
622 eval ' use Scalar::Util "dualvar" ';
626 package CompTestUtils;
633 t/compress/CompTestUtils.pm
636 t/compress/destroy.pl
637 t/compress/generic.pl
640 t/compress/newtied.pl
641 t/compress/oneshot.pl
644 t/compress/truncate.pl
645 t/compress/zlib-generic.plParsing config.in...
646 Building Zlib enabled
647 Auto Detect Gzip OS Code..
648 Setting Gzip OS Code to 3 [Unix/Default]