Move IO::Compress from ext/ to cpan/
[p5sagit/p5-mst-13.2.git] / cpan / IO-Compress / t / 105oneshot-gzip-only.t
CommitLineData
25f0751f 1BEGIN {
2 if ($ENV{PERL_CORE}) {
3 chdir 't' if -d 't';
4 @INC = ("../lib", "lib/compress");
5 }
6}
7
8use lib qw(t t/compress);
9use strict;
10use warnings;
11use bytes;
12
13use Test::More ;
14use CompTestUtils;
15
16BEGIN {
17 plan(skip_all => "oneshot needs Perl 5.005 or better - you have Perl $]" )
18 if $] < 5.005 ;
19
20
21 # use Test::NoWarnings, if available
22 my $extra = 0 ;
23 $extra = 1
24 if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 };
25
26 plan tests => 70 + $extra ;
27
28 use_ok('IO::Compress::Gzip', qw($GzipError)) ;
29 use_ok('IO::Uncompress::Gunzip', qw($GunzipError)) ;
30
31
32}
33
34
35sub gzipGetHeader
36{
37 my $in = shift;
38 my $content = shift ;
39 my %opts = @_ ;
40
41 my $out ;
42 my $got ;
43
44 ok IO::Compress::Gzip::gzip($in, \$out, %opts), " gzip ok" ;
45 ok IO::Uncompress::Gunzip::gunzip(\$out, \$got), " gunzip ok"
46 or diag $GunzipError ;
47 is $got, $content, " got expected content" ;
48
49 my $gunz = new IO::Uncompress::Gunzip \$out, Strict => 0
50 or diag "GunzipError is $IO::Uncompress::Gunzip::GunzipError" ;
51 ok $gunz, " Created IO::Uncompress::Gunzip object";
52 my $hdr = $gunz->getHeaderInfo();
53 ok $hdr, " got Header info";
54 my $uncomp ;
55 ok $gunz->read($uncomp), " read ok" ;
56 is $uncomp, $content, " got expected content";
57 ok $gunz->close, " closed ok" ;
58
59 return $hdr ;
60
61}
62
63{
64 title "Check gzip header default NAME & MTIME settings" ;
65
66 my $lex = new LexFile my $file1;
67
68 my $content = "hello ";
69 my $hdr ;
70 my $mtime ;
71
72 writeFile($file1, $content);
73 $mtime = (stat($file1))[9];
74 # make sure that the gzip file isn't created in the same
75 # second as the input file
76 sleep 3 ;
77 $hdr = gzipGetHeader($file1, $content);
78
79 is $hdr->{Name}, $file1, " Name is '$file1'";
80 is $hdr->{Time}, $mtime, " Time is ok";
81
82 title "Override Name" ;
83
84 writeFile($file1, $content);
85 $mtime = (stat($file1))[9];
86 sleep 3 ;
87 $hdr = gzipGetHeader($file1, $content, Name => "abcde");
88
89 is $hdr->{Name}, "abcde", " Name is 'abcde'" ;
90 is $hdr->{Time}, $mtime, " Time is ok";
91
92 title "Override Time" ;
93
94 writeFile($file1, $content);
95 $hdr = gzipGetHeader($file1, $content, Time => 1234);
96
97 is $hdr->{Name}, $file1, " Name is '$file1'" ;
98 is $hdr->{Time}, 1234, " Time is 1234";
99
100 title "Override Name and Time" ;
101
102 writeFile($file1, $content);
103 $hdr = gzipGetHeader($file1, $content, Time => 4321, Name => "abcde");
104
105 is $hdr->{Name}, "abcde", " Name is 'abcde'" ;
106 is $hdr->{Time}, 4321, " Time is 4321";
107
108 title "Filehandle doesn't have default Name or Time" ;
109 my $fh = new IO::File "< $file1"
110 or diag "Cannot open '$file1': $!\n" ;
111 sleep 3 ;
112 my $before = time ;
113 $hdr = gzipGetHeader($fh, $content);
114 my $after = time ;
115
116 ok ! defined $hdr->{Name}, " Name is undef";
117 cmp_ok $hdr->{Time}, '>=', $before, " Time is ok";
118 cmp_ok $hdr->{Time}, '<=', $after, " Time is ok";
119
120 $fh->close;
121
122 title "Buffer doesn't have default Name or Time" ;
123 my $buffer = $content;
124 $before = time ;
125 $hdr = gzipGetHeader(\$buffer, $content);
126 $after = time ;
127
128 ok ! defined $hdr->{Name}, " Name is undef";
129 cmp_ok $hdr->{Time}, '>=', $before, " Time is ok";
130 cmp_ok $hdr->{Time}, '<=', $after, " Time is ok";
131}
132
133# TODO add more error cases
134