Commit | Line | Data |
a1787f24 |
1 | BEGIN { |
2 | if ($ENV{PERL_CORE}) { |
3 | chdir 't' if -d 't'; |
4 | @INC = ("../lib", "lib/compress"); |
5 | } |
6 | } |
7 | |
8 | use lib qw(t t/compress); |
9 | use strict; |
10 | use warnings; |
11 | use bytes; |
12 | |
13 | use Test::More ; |
14 | use CompTestUtils; |
15 | |
16 | BEGIN { |
17 | # use Test::NoWarnings, if available |
18 | my $extra = 0 ; |
19 | $extra = 1 |
20 | if eval { require Test::NoWarnings ; import Test::NoWarnings; 1 }; |
21 | |
22 | plan tests => 62 + $extra ; |
23 | |
24 | use_ok('IO::Compress::Zip', qw(:all)) ; |
25 | use_ok('IO::Uncompress::Unzip', qw(unzip $UnzipError)) ; |
26 | |
27 | eval { |
28 | require IO::Compress::Bzip2 ; |
29 | import IO::Compress::Bzip2 2.010 ; |
30 | require IO::Uncompress::Bunzip2 ; |
31 | import IO::Uncompress::Bunzip2 2.010 ; |
32 | } ; |
33 | |
34 | } |
35 | |
36 | |
37 | sub getContent |
38 | { |
39 | my $filename = shift; |
40 | |
41 | my $u = new IO::Uncompress::Unzip $filename, Append => 1 |
42 | or die "Cannot open $filename: $UnzipError"; |
43 | |
44 | isa_ok $u, "IO::Uncompress::Unzip"; |
45 | |
46 | my @content; |
47 | my $status ; |
48 | |
49 | for ($status = 1; ! $u->eof(); $status = $u->nextStream()) |
50 | { |
51 | |
52 | my $name = $u->getHeaderInfo()->{Name}; |
53 | #warn "Processing member $name\n" ; |
54 | |
55 | my $buff = ''; |
56 | 1 while ($status = $u->read($buff)) > 0; |
57 | |
58 | push @content, $buff; |
59 | last unless $status == 0; |
60 | } |
61 | |
62 | die "Error processing $filename: $status $!\n" |
63 | if $status < 0 ; |
64 | |
65 | return @content; |
66 | } |
67 | |
68 | |
69 | { |
70 | title "Create a simple zip - All Deflate"; |
71 | |
72 | my $lex = new LexFile my $file1; |
73 | |
74 | my @content = ( |
75 | 'hello', |
76 | '', |
77 | 'goodbye ', |
78 | ); |
79 | |
80 | my $zip = new IO::Compress::Zip $file1, |
81 | Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0; |
82 | isa_ok $zip, "IO::Compress::Zip"; |
83 | |
84 | is $zip->write($content[0]), length($content[0]), "write"; |
85 | $zip->newStream(Name=> "two", Method => ZIP_CM_DEFLATE); |
86 | is $zip->write($content[1]), length($content[1]), "write"; |
87 | $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE); |
88 | is $zip->write($content[2]), length($content[2]), "write"; |
89 | ok $zip->close(), "closed"; |
90 | |
91 | my @got = getContent($file1); |
92 | |
93 | is $got[0], $content[0], "Got 1st entry"; |
94 | is $got[1], $content[1], "Got 2nd entry"; |
95 | is $got[2], $content[2], "Got 3nd entry"; |
96 | } |
97 | |
98 | SKIP: |
99 | { |
100 | title "Create a simple zip - All Bzip2"; |
101 | |
102 | skip "IO::Compress::Bzip2 not available", 9 |
103 | unless defined $IO::Compress::Bzip2::VERSION; |
104 | |
105 | my $lex = new LexFile my $file1; |
106 | |
107 | my @content = ( |
108 | 'hello', |
109 | '', |
110 | 'goodbye ', |
111 | ); |
112 | |
113 | my $zip = new IO::Compress::Zip $file1, |
114 | Name => "one", Method => ZIP_CM_BZIP2, Stream => 0; |
115 | isa_ok $zip, "IO::Compress::Zip"; |
116 | |
117 | is $zip->write($content[0]), length($content[0]), "write"; |
118 | $zip->newStream(Name=> "two", Method => ZIP_CM_BZIP2); |
119 | is $zip->write($content[1]), length($content[1]), "write"; |
120 | $zip->newStream(Name=> "three", Method => ZIP_CM_BZIP2); |
121 | is $zip->write($content[2]), length($content[2]), "write"; |
122 | ok $zip->close(), "closed"; |
123 | |
124 | my @got = getContent($file1); |
125 | |
126 | is $got[0], $content[0], "Got 1st entry"; |
127 | is $got[1], $content[1], "Got 2nd entry"; |
128 | is $got[2], $content[2], "Got 3nd entry"; |
129 | } |
130 | |
131 | SKIP: |
132 | { |
133 | title "Create a simple zip - Deflate + Bzip2"; |
134 | |
135 | skip "IO::Compress::Bzip2 not available", 9 |
136 | unless $IO::Compress::Bzip2::VERSION; |
137 | |
138 | my $lex = new LexFile my $file1; |
139 | |
140 | my @content = ( |
141 | 'hello', |
142 | 'and', |
143 | 'goodbye ', |
144 | ); |
145 | |
146 | my $zip = new IO::Compress::Zip $file1, |
147 | Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0; |
148 | isa_ok $zip, "IO::Compress::Zip"; |
149 | |
150 | is $zip->write($content[0]), length($content[0]), "write"; |
151 | $zip->newStream(Name=> "two", Method => ZIP_CM_BZIP2); |
152 | is $zip->write($content[1]), length($content[1]), "write"; |
153 | $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE); |
154 | is $zip->write($content[2]), length($content[2]), "write"; |
155 | ok $zip->close(), "closed"; |
156 | |
157 | my @got = getContent($file1); |
158 | |
159 | is $got[0], $content[0], "Got 1st entry"; |
160 | is $got[1], $content[1], "Got 2nd entry"; |
161 | is $got[2], $content[2], "Got 3nd entry"; |
162 | } |
163 | |
164 | { |
165 | title "Create a simple zip - All STORE"; |
166 | |
167 | my $lex = new LexFile my $file1; |
168 | |
169 | my @content = ( |
170 | 'hello', |
171 | '', |
172 | 'goodbye ', |
173 | ); |
174 | |
175 | my $zip = new IO::Compress::Zip $file1, |
176 | Name => "one", Method => ZIP_CM_STORE, Stream => 0; |
177 | isa_ok $zip, "IO::Compress::Zip"; |
178 | |
179 | is $zip->write($content[0]), length($content[0]), "write"; |
180 | $zip->newStream(Name=> "two", Method => ZIP_CM_STORE); |
181 | is $zip->write($content[1]), length($content[1]), "write"; |
182 | $zip->newStream(Name=> "three", Method => ZIP_CM_STORE); |
183 | is $zip->write($content[2]), length($content[2]), "write"; |
184 | ok $zip->close(), "closed"; |
185 | |
186 | my @got = getContent($file1); |
187 | |
188 | is $got[0], $content[0], "Got 1st entry"; |
189 | is $got[1], $content[1], "Got 2nd entry"; |
190 | is $got[2], $content[2], "Got 3nd entry"; |
191 | } |
192 | |
193 | { |
194 | title "Create a simple zip - Deflate + STORE"; |
195 | |
3d872173 |
196 | my $lex = new LexFile my $file1; |
a1787f24 |
197 | |
198 | my @content = qw( |
199 | hello |
200 | and |
201 | goodbye |
202 | ); |
203 | |
204 | my $zip = new IO::Compress::Zip $file1, |
205 | Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0; |
206 | isa_ok $zip, "IO::Compress::Zip"; |
207 | |
208 | is $zip->write($content[0]), length($content[0]), "write"; |
209 | $zip->newStream(Name=> "two", Method => ZIP_CM_STORE); |
210 | is $zip->write($content[1]), length($content[1]), "write"; |
211 | $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE); |
212 | is $zip->write($content[2]), length($content[2]), "write"; |
213 | ok $zip->close(), "closed"; |
214 | |
215 | my @got = getContent($file1); |
216 | |
217 | is $got[0], $content[0], "Got 1st entry"; |
218 | is $got[1], $content[1], "Got 2nd entry"; |
219 | is $got[2], $content[2], "Got 3nd entry"; |
220 | } |
221 | |
222 | { |
223 | title "Create a simple zip - Deflate + zero length STORE"; |
224 | |
225 | my $lex = new LexFile my $file1; |
226 | |
227 | my @content = ( |
228 | 'hello ', |
229 | '', |
230 | 'goodbye ', |
231 | ); |
232 | |
233 | my $zip = new IO::Compress::Zip $file1, |
234 | Name => "one", Method => ZIP_CM_DEFLATE, Stream => 0; |
235 | isa_ok $zip, "IO::Compress::Zip"; |
236 | |
237 | is $zip->write($content[0]), length($content[0]), "write"; |
238 | $zip->newStream(Name=> "two", Method => ZIP_CM_STORE); |
239 | is $zip->write($content[1]), length($content[1]), "write"; |
240 | $zip->newStream(Name=> "three", Method => ZIP_CM_DEFLATE); |
241 | is $zip->write($content[2]), length($content[2]), "write"; |
242 | ok $zip->close(), "closed"; |
243 | |
244 | my @got = getContent($file1); |
245 | |
246 | is $got[0], $content[0], "Got 1st entry"; |
247 | ok $got[1] eq $content[1], "Got 2nd entry"; |
248 | is $got[2], $content[2], "Got 3nd entry"; |
249 | } |
250 | |