bzip2-ruby 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,12 @@ if have_library("bz2", "BZ2_bzWriteOpen")
7
7
  if enable_config("shared", true)
8
8
  $static = nil
9
9
  end
10
- create_makefile("bzip2")
10
+
11
+ if RUBY_VERSION =~ /1.9/
12
+ $CFLAGS << ' -DRUBY_19_COMPATIBILITY'
13
+ end
14
+
15
+ create_makefile("bzip2_ext")
11
16
  else
12
17
  puts "libbz2 not found, maybe try manually specifying --with-bz2-dir to find it?"
13
18
  end
@@ -0,0 +1,5 @@
1
+ require 'bzip2_ext'
2
+
3
+ module Bzip2
4
+ VERSION = "0.2.5"
5
+ end
@@ -0,0 +1,357 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper.rb')
3
+
4
+ describe "Bzip2::Writer" do
5
+ before(:all) do
6
+ @sample = "08: This is a line\n"
7
+ @file = "_10lines_"
8
+ @data = [
9
+ "00: This is a line\n",
10
+ "01: This is a line\n",
11
+ "02: This is a line\n",
12
+ "03: This is a line\n",
13
+ "04: This is a line\n",
14
+ "05: This is a line\n",
15
+ "06: This is a line\n",
16
+ "07: This is a line\n",
17
+ "08: This is a line\n",
18
+ "09: This is a line\n"
19
+ ]
20
+
21
+ open("|bzip2 > #{@file}", "w") do |f|
22
+ @data.each { |l| f.puts l }
23
+ end
24
+ end
25
+
26
+ after(:all) do
27
+ File.unlink(@file)
28
+ end
29
+
30
+ it "should test_f_s_foreach" do
31
+ count = 0
32
+ Bzip2::Reader.foreach(@file) do |line|
33
+ num = line[0..1].to_i
34
+ count.should == num
35
+ count += 1
36
+ end
37
+ @data.size.should == count
38
+
39
+ count = 0
40
+ Bzip2::Reader.foreach(@file, nil) do |file|
41
+ file.split(/\n/).each do |line|
42
+ num = line[0..1].to_i
43
+ count.should == num
44
+ count += 1
45
+ end
46
+ end
47
+ @data.size.should == count
48
+
49
+ count = 0
50
+ Bzip2::Reader.foreach(@file, ' ') do |thing|
51
+ count += 1
52
+ end
53
+ 41.should == count
54
+ end
55
+
56
+ it "should test_f_s_readlines" do
57
+ lines = Bzip2::Reader.readlines(@file)
58
+ @data.size.should == lines.size
59
+
60
+ lines = Bzip2::Reader.readlines(@file, nil)
61
+ 1.should == lines.size
62
+ (@sample.length * @data.size).should == lines[0].size
63
+ end
64
+
65
+ it "should test_f_closed?" do
66
+ f = Bzip2::Reader.open(@file)
67
+ f.closed?.should be_false
68
+ f.close
69
+ f.closed?.should be_true
70
+ end
71
+
72
+ it "should test_f_each" do
73
+ count = 0
74
+ Bzip2::Reader.open(@file) do |file|
75
+ file.each do |line|
76
+ num = line[0..1].to_i
77
+ count.should == num
78
+ count += 1
79
+ end
80
+ @data.size.should == count
81
+ end
82
+
83
+ count = 0
84
+ Bzip2::Reader.open(@file) do |file|
85
+ file.each(nil) do |contents|
86
+ contents.split(/\n/).each do |line|
87
+ num = line[0..1].to_i
88
+ count.should == num
89
+ count += 1
90
+ end
91
+ end
92
+ end
93
+ @data.size.should == count
94
+
95
+ count = 0
96
+ Bzip2::Reader.open(@file) do |file|
97
+ file.each(' ') do |thing|
98
+ count += 1
99
+ end
100
+ end
101
+ 41.should == count
102
+ end
103
+
104
+ it "should test_f_each_byte" do
105
+ count = 0
106
+ data = @data.join
107
+
108
+ Bzip2::Reader.open(@file) do |file|
109
+ file.each_byte do |b|
110
+ data.getbyte(count).should == b
111
+ count += 1
112
+ end
113
+ end
114
+ (@sample.length * @data.size).should == count
115
+ end
116
+
117
+ it "should test_f_each_line" do
118
+ count = 0
119
+ Bzip2::Reader.open(@file) do |file|
120
+ file.each_line do |line|
121
+ num = line[0..1].to_i
122
+ count.should == num
123
+ count += 1
124
+ end
125
+ @data.size.should == count
126
+ end
127
+
128
+ count = 0
129
+ Bzip2::Reader.open(@file) do |file|
130
+ file.each_line(nil) do |contents|
131
+ contents.split(/\n/).each do |line|
132
+ num = line[0..1].to_i
133
+ count.should == num
134
+ count += 1
135
+ end
136
+ end
137
+ end
138
+ @data.size.should == count
139
+
140
+ count = 0
141
+ Bzip2::Reader.open(@file) do |file|
142
+ file.each_line(' ') do |thing|
143
+ count += 1
144
+ end
145
+ end
146
+ 41.should == count
147
+ end
148
+
149
+ it "should test_f_eof" do
150
+ Bzip2::Reader.open(@file) do |file|
151
+ @data.size.times do
152
+ (!file.eof).should be_true
153
+ (!file.eof?).should be_true
154
+ file.gets
155
+ end
156
+ file.eof.should be_true
157
+ file.eof?.should be_true
158
+ end
159
+ end
160
+
161
+ it "should test_f_getc" do
162
+ count = 0
163
+ data = @data.join
164
+
165
+ Bzip2::Reader.open(@file) do |file|
166
+ while (ch = file.getc)
167
+ data.getbyte(count).should == ch
168
+ count += 1
169
+ end
170
+ file.getc.should be_nil
171
+ end
172
+ (@sample.length * @data.size).should == count
173
+ end
174
+
175
+ it "should test_f_gets" do
176
+ count = 0
177
+ Bzip2::Reader.open(@file) do |file|
178
+ while (line = file.gets)
179
+ num = line[0..1].to_i
180
+ count.should == num
181
+ count += 1
182
+ end
183
+ file.gets.should be_nil
184
+ @data.size.should == count
185
+ end
186
+
187
+ count = 0
188
+ Bzip2::Reader.open(@file) do |file|
189
+ while (line = file.gets("line\n"))
190
+ @data[count].should == line
191
+ num = line[0..1].to_i
192
+ count.should == num
193
+ count += 1
194
+ end
195
+ file.gets.should be_nil
196
+ @data.size.should == count
197
+ end
198
+
199
+ count = 0
200
+ Bzip2::Reader.open(@file) do |file|
201
+ while (contents = file.gets(nil))
202
+ contents.split(/\n/).each do |line|
203
+ num = line[0..1].to_i
204
+ count.should == num
205
+ count += 1
206
+ end
207
+ end
208
+ end
209
+ @data.size.should == count
210
+
211
+ count = 0
212
+ Bzip2::Reader.open(@file) do |file|
213
+ while (thing = file.gets(' '))
214
+ count += 1
215
+ end
216
+ end
217
+ 41.should == count
218
+ end
219
+
220
+ it "should test_f_read" do
221
+ Bzip2::Reader.open(@file) do |file|
222
+ content = file.read
223
+ (@sample.length * @data.size).should == content.length
224
+ count = 0
225
+ content.split(/\n/).each do |line|
226
+ num = line[0..1].to_i
227
+ count.should == num
228
+ count += 1
229
+ end
230
+ end
231
+
232
+ Bzip2::Reader.open(@file) do |file|
233
+ "00: This is ".should == file.read(12)
234
+ "a line\n01: T".should == file.read(12)
235
+ end
236
+ end
237
+
238
+ it "should test_f_readchar" do
239
+ count = 0
240
+ data = @data.join
241
+ Bzip2::Reader.open(@file) do |file|
242
+ 190.times do |count|
243
+ ch = file.readchar
244
+ data.getbyte(count).should == ch
245
+ count += 1
246
+ end
247
+ lambda { file.readchar }.should raise_error(Bzip2::EOZError)
248
+ end
249
+ end
250
+
251
+ it "should test_f_readline" do
252
+ count = 0
253
+ Bzip2::Reader.open(@file) do |file|
254
+ @data.size.times do |count|
255
+ line = file.readline
256
+ num = line[0..1].to_i
257
+ count.should == num
258
+ count += 1
259
+ end
260
+ lambda { file.readline }.should raise_error(Bzip2::EOZError)
261
+ end
262
+
263
+ count = 0
264
+ Bzip2::Reader.open(@file) do |file|
265
+ contents = file.readline(nil)
266
+ contents.split(/\n/).each do |line|
267
+ num = line[0..1].to_i
268
+ count.should == num
269
+ count += 1
270
+ end
271
+ lambda { file.readline }.should raise_error(Bzip2::EOZError)
272
+ end
273
+ @data.size.should == count
274
+
275
+ count = 0
276
+ Bzip2::Reader.open(@file) do |file|
277
+ 41.times do |count|
278
+ thing = file.readline(' ')
279
+ count += 1
280
+ end
281
+ lambda { file.readline }.should raise_error(Bzip2::EOZError)
282
+ end
283
+ end
284
+
285
+ it "should test_f_readlines" do
286
+ Bzip2::Reader.open(@file) do |file|
287
+ lines = file.readlines
288
+ @data.size.should == lines.size
289
+ end
290
+
291
+ Bzip2::Reader.open(@file) do |file|
292
+ lines = file.readlines(nil)
293
+ 1.should == lines.size
294
+ (@sample.length * @data.size).should == lines[0].size
295
+ end
296
+ end
297
+
298
+ # it "should test_f_ungetc" do
299
+ # Bzip2::Reader.open(@file) do |file|
300
+ # ?0.getbyte(0).should == file.getc
301
+ # ?0.getbyte(0).should == file.getc
302
+ # ?:.getbyte(0).should == file.getc
303
+ # ?\s.getbyte(0).should == file.getc
304
+ # file.ungetc(?:.to_i).should be_nil
305
+ # ?:.getbyte(0).should == file.getc
306
+ # 1 while file.getc
307
+ # file.ungetc(?A).should be_nil
308
+ # ?A.should == file.getc
309
+ # end
310
+ # end
311
+
312
+ it "should test_f_ungets" do
313
+ count = 0
314
+ Bzip2::Reader.open(@file) do |file|
315
+ @data[count].should == file.gets
316
+ (count + 1).should == file.lineno
317
+ file.ungets(@data[count]).should be_nil
318
+ @data[count].should == file.gets
319
+ count += 1
320
+ end
321
+ end
322
+
323
+ it "should test_s_readline" do
324
+ count = 0
325
+ string = IO.readlines(@file, nil)[0]
326
+ file = Bzip2::Reader.new(string)
327
+ @data.size.times do |count|
328
+ line = file.readline
329
+ num = line[0..1].to_i
330
+ count.should == num
331
+ count += 1
332
+ end
333
+ lambda { file.readline }.should raise_error(Bzip2::EOZError)
334
+ file.close
335
+
336
+ count = 0
337
+ file = Bzip2::Reader.new(string)
338
+ contents = file.readline(nil)
339
+ contents.split(/\n/).each do |line|
340
+ num = line[0..1].to_i
341
+ count.should == num
342
+ count += 1
343
+ end
344
+ lambda { file.readline }.should raise_error(Bzip2::EOZError)
345
+ @data.size.should == count
346
+ file.close
347
+
348
+ count = 0
349
+ file = Bzip2::Reader.new(string)
350
+ 41.times do |count|
351
+ thing = file.readline(' ')
352
+ count += 1
353
+ end
354
+ lambda { file.readline }.should raise_error(Bzip2::EOZError)
355
+ file.close
356
+ end
357
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: UTF-8
2
+ require 'bzip2_ext'
3
+
4
+ # back-port 1.9 method so the tests will pass in 1.8 as well
5
+ if RUBY_VERSION.include?("1.8")
6
+ class String
7
+ def getbyte(idx)
8
+ self[idx]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,139 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper.rb')
3
+
4
+ describe "Bzip2::Writer" do
5
+ class Dummy
6
+ def to_s
7
+ "dummy"
8
+ end
9
+ end
10
+
11
+ before(:all) do
12
+ @file = "_10lines_"
13
+ end
14
+
15
+ after(:all) do
16
+ File.unlink(@file)
17
+ end
18
+
19
+ def test_f_LSHIFT # '<<'
20
+ Bzip2::Writer.open($file, "w") do |file|
21
+ file << 1 << "\n" << Dummy.new << "\n" << "cat\n"
22
+ end
23
+ expected = [ "1\n", "dummy\n", "cat\n"]
24
+ Bzip2::Reader.foreach($file) do |line|
25
+ expected.shift.should == line
26
+ end
27
+ [].should == expected
28
+ end
29
+
30
+ def test_f_error
31
+ io = File.new($file, "w")
32
+ bz2 = Bzip2::Writer.new(io)
33
+ bz2 << 1 << "\n" << Dummy.new << "\n" << "cat\n"
34
+ bz = Bzip2::Reader.new($file)
35
+ lambda { bz.gets }.should raise_error(Bzip2::EOZError)
36
+ bz = Bzip2::Reader.open($file)
37
+ lambda { bz.gets }.should raise_error(Bzip2::EOZError)
38
+ io.close
39
+ lambda { Bzip2::Reader.new(io) }.should raise_error(IOError)
40
+ end
41
+
42
+ def test_f_gets_para
43
+ Bzip2::Writer.open($file) do |file|
44
+ file.print "foo\n"*4096, "\n"*4096, "bar"*4096, "\n"*4096, "zot\n"*1024
45
+ end
46
+ Bzip2::Reader.open($file) do |file|
47
+ ("foo\n"*4096+"\n").should == file.gets("")
48
+ ("bar"*4096+"\n\n").should == file.gets("")
49
+ ("zot\n"*1024).should == file.gets("")
50
+ end
51
+ end
52
+
53
+ def test_f_print
54
+ Bzip2::Writer.open($file) do |file|
55
+ file.print "hello"
56
+ file.print 1,2
57
+ $_ = "wombat\n"
58
+ file.print
59
+ $\ = ":"
60
+ $, = ","
61
+ file.print 3, 4
62
+ file.print 5, 6
63
+ $\ = nil
64
+ file.print "\n"
65
+ $, = nil
66
+ end
67
+
68
+ Bzip2::Reader.open($file) do |file|
69
+ content = file.gets(nil)
70
+ "hello12wombat\n3,4:5,6:\n".should == content
71
+ end
72
+ end
73
+
74
+ def test_f_putc
75
+ Bzip2::Writer.open($file, "wb") do |file|
76
+ file.putc "A"
77
+ 0.upto(255) { |ch| file.putc ch }
78
+ end
79
+
80
+ Bzip2::Reader.open($file, "rb") do |file|
81
+ ?A.should == file.getc
82
+ 0.upto(255) { |ch| ch.should == file.getc }
83
+ end
84
+ end
85
+
86
+ def test_f_puts
87
+ Bzip2::Writer.open($file, "w") do |file|
88
+ file.puts "line 1", "line 2"
89
+ file.puts [ Dummy.new, 4 ]
90
+ end
91
+
92
+ Bzip2::Reader.open($file) do |file|
93
+ "line 1\n".should == file.gets
94
+ "line 2\n".should == file.gets
95
+ "dummy\n".should == file.gets
96
+ "4\n".should == file.gets
97
+ end
98
+ end
99
+
100
+ def test_f_write
101
+ Bzip2::Writer.open($file, "w") do |file|
102
+ 10.should == file.write('*' * 10)
103
+ 5.should == file.write('!' * 5)
104
+ 0.should == file.write('')
105
+ 1.should == file.write(1)
106
+ 3.should == file.write(2.30000)
107
+ 1.should == file.write("\n")
108
+ end
109
+
110
+ Bzip2::Reader.open($file) do |file|
111
+ "**********!!!!!12.3\n".should == file.gets
112
+ end
113
+ end
114
+
115
+ def test_s_string
116
+ file = Bzip2::Writer.new
117
+ 10.should == file.write('*' * 10)
118
+ 5.should == file.write('!' * 5)
119
+ 0.should == file.write('')
120
+ 1.should == file.write(1)
121
+ 3.should == file.write(2.30000)
122
+ 1.should == file.write("\n")
123
+ line = Bzip2::bunzip2(file.flush)
124
+ "**********!!!!!12.3\n".should == line
125
+
126
+ line = Bzip2::bunzip2(Bzip2::bzip2("**********!!!!!12.3\n"))
127
+ "**********!!!!!12.3\n".should == line
128
+
129
+ test = "foo\n"*4096 + "\n"*4096 + "bar"*4096 + "\n"*4096 + "zot\n"*1024
130
+ line = Bzip2::bunzip2(Bzip2::bzip2(test))
131
+ test.should == line
132
+
133
+ Bzip2::bzip2("aaaaaaaaa".taint).tainted?.should be_true
134
+ Bzip2::bunzip2(Bzip2::bzip2("aaaaaaaaa".taint)).tainted?.should be_true
135
+ (!Bzip2::bzip2("aaaaaaaaa").tainted?).should be_false
136
+ (!Bzip2::bunzip2(Bzip2::bzip2("aaaaaaaaa")).tainted?).should be_false
137
+
138
+ end
139
+ end