ione 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3ef9ccb78957f99a401f9d3808fa74ea940ff17
4
- data.tar.gz: 081d0432ba2a6960d84ee527c9ff10474b4ce31e
3
+ metadata.gz: 443070cc0eb7a65e30942699de1c6435af5b07e1
4
+ data.tar.gz: 50d81a6204f39103bcfbdadfdf4b5a764207ecf3
5
5
  SHA512:
6
- metadata.gz: 8c4624c05b932671afdd0c8406e345cd3476bfad89b2118fabf3ce4101ba3849dc98ad0f32168c7c8b255c0f20bec9961d016f469a516dae20db7792294829ca
7
- data.tar.gz: 6a1ec1a33dbdb4f9bdaf0faffd68e4e23019763ab4a3a90e232144ebea228eff1d865ec6094b323b908fc63e419c993cb02183acb39f7f5d5632dc735ab3b0f7
6
+ metadata.gz: 596feb59ad89022c6ef6150b3cd5fc6903965108a4f7c219f2fdef612c3e83f76ed7750516c6381b29c8bfea7ae987301859b17a62339f43abf79ed223cf1810
7
+ data.tar.gz: 1cae4a2e82976c0d5eda3ba67fd2bb59ef6bb5853ab645bdccc1e268587cab1a24cc7eca42aa076ac2b0bb4737a33c6a6590916c3dc3b83e2b51b28e3178bc38
@@ -599,6 +599,8 @@ module Ione
599
599
  @lock = Mutex.new
600
600
  @state = PENDING_STATE
601
601
  @listeners = []
602
+ @value = nil
603
+ @error = nil
602
604
  end
603
605
 
604
606
  # Registers a listener that will be called when this future completes,
@@ -859,9 +861,9 @@ module Ione
859
861
  looping = more = true
860
862
  while more
861
863
  more = false
862
- @futures.pop.on_complete do |v, e|
863
- if e || @futures.empty? || !looping || !Thread.current.equal?(outer)
864
- await_next(v, e)
864
+ @futures.pop.on_complete do |value, error|
865
+ if error || @futures.empty? || !looping || !Thread.current.equal?(outer)
866
+ await_next(value, error)
865
867
  else
866
868
  more = true
867
869
  end
@@ -22,6 +22,7 @@ module Ione
22
22
  @backlog = backlog
23
23
  @unblocker = unblocker
24
24
  @reactor = reactor
25
+ @io = nil
25
26
  @socket_impl = socket_impl || ServerSocket
26
27
  @accept_listeners = []
27
28
  @lock = Mutex.new
@@ -15,10 +15,12 @@ module Ione
15
15
  def initialize(host, port, unblocker)
16
16
  @host = host
17
17
  @port = port
18
+ @io = nil
18
19
  @unblocker = unblocker
19
20
  @state = CONNECTING_STATE
20
21
  @writable = false
21
22
  @lock = Mutex.new
23
+ @data_listener = nil
22
24
  @write_buffer = ByteBuffer.new
23
25
  @closed_promise = Promise.new
24
26
  end
@@ -14,6 +14,7 @@ module Ione
14
14
  @connection_timeout = connection_timeout
15
15
  @clock = clock
16
16
  @socket_impl = socket_impl
17
+ @addrinfos = nil
17
18
  @connected_promise = Promise.new
18
19
  on_closed(&method(:cleanup_on_close))
19
20
  end
@@ -95,6 +95,7 @@ module Ione
95
95
  @clock = options[:clock] || Time
96
96
  @state = PENDING_STATE
97
97
  @error_listeners = []
98
+ @unblocker = nil
98
99
  @io_loop = IoLoopBody.new(@options)
99
100
  @scheduler = Scheduler.new
100
101
  @lock = Mutex.new
@@ -570,8 +571,8 @@ module Ione
570
571
  ensure
571
572
  @lock.unlock
572
573
  end
573
- timers.each do |timer|
574
- timer.fail(CancelledError.new)
574
+ timers.each do |t|
575
+ t.fail(CancelledError.new)
575
576
  end
576
577
  nil
577
578
  end
@@ -592,8 +593,8 @@ module Ione
592
593
  ensure
593
594
  @lock.unlock
594
595
  end
595
- expired_timers.each do |timer|
596
- timer.fulfill
596
+ expired_timers.each do |t|
597
+ t.fulfill
597
598
  end
598
599
  end
599
600
  end
@@ -12,6 +12,7 @@ module Ione
12
12
  @socket_impl = socket_impl
13
13
  @ssl_context = ssl_context
14
14
  @raw_io = io
15
+ @io = nil
15
16
  @connected_promise = Promise.new
16
17
  on_closed(&method(:cleanup_on_close))
17
18
  end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Ione
4
- VERSION = '1.2.3'.freeze
4
+ VERSION = '1.2.4'.freeze
5
5
  end
@@ -37,7 +37,7 @@ describe 'An IO reactor' do
37
37
  fake_server.await_connects(1)
38
38
  fake_server.broadcast('hello world')
39
39
  await { protocol_handler.data.bytesize > 0 }
40
- protocol_handler.data.should == 'hello world'
40
+ protocol_handler.data.should eq('hello world')
41
41
  end
42
42
 
43
43
  it 'receives data on multiple connections' do
@@ -45,7 +45,7 @@ describe 'An IO reactor' do
45
45
  fake_server.await_connects(10)
46
46
  fake_server.broadcast('hello world')
47
47
  await { protocol_handlers.all? { |c| c.data.bytesize > 0 } }
48
- protocol_handlers.sample.data.should == 'hello world'
48
+ protocol_handlers.sample.data.should eq('hello world')
49
49
  end
50
50
  end
51
51
 
@@ -81,7 +81,7 @@ describe 'An IO reactor' do
81
81
  socket = TCPSocket.new(ENV['SERVER_HOST'], port)
82
82
  socket.puts('HELLO')
83
83
  result = socket.read(5)
84
- result.should == 'HELLO'
84
+ result.should eq('HELLO')
85
85
  socket.close
86
86
  end
87
87
  end
@@ -49,6 +49,7 @@ describe 'SSL' do
49
49
  ssl_context = OpenSSL::SSL::SSLContext.new
50
50
  ssl_context.key = OpenSSL::PKey::RSA.new(ssl_key)
51
51
  ssl_context.cert = OpenSSL::X509::Certificate.new(ssl_cert)
52
+ ssl_context.tmp_dh_callback = proc { SslSpec::DH_PARAMS }
52
53
 
53
54
  f = io_reactor.start
54
55
  f = f.flat_map do
@@ -80,8 +81,8 @@ describe 'SSL' do
80
81
  end
81
82
  client.write('hello world')
82
83
  response_received.future.value
83
- server_received_data.to_s.should == 'hello world'
84
- client_received_data.to_s.should == 'dlrow olleh'
84
+ server_received_data.to_s.should eq('hello world')
85
+ client_received_data.to_s.should eq('dlrow olleh')
85
86
  end
86
87
 
87
88
  it 'fails to send a message when not using encryption' do
@@ -95,3 +96,7 @@ describe 'SSL' do
95
96
  client.should be_closed
96
97
  end
97
98
  end
99
+
100
+ module SslSpec
101
+ DH_PARAMS = OpenSSL::PKey::DH.new(File.read(File.expand_path('../../resources/dh.pem', __FILE__)))
102
+ end
@@ -15,28 +15,28 @@ module Ione
15
15
  end
16
16
 
17
17
  it 'can be initialized with bytes' do
18
- described_class.new('hello').length.should == 5
18
+ described_class.new('hello').length.should eq(5)
19
19
  end
20
20
  end
21
21
 
22
22
  describe '#length/#size/#bytesize' do
23
23
  it 'returns the number of bytes in the buffer' do
24
24
  buffer << 'foo'
25
- buffer.length.should == 3
25
+ buffer.length.should eq(3)
26
26
  end
27
27
 
28
28
  it 'is zero initially' do
29
- buffer.length.should == 0
29
+ buffer.length.should eq(0)
30
30
  end
31
31
 
32
32
  it 'is aliased as #size' do
33
33
  buffer << 'foo'
34
- buffer.size.should == 3
34
+ buffer.size.should eq(3)
35
35
  end
36
36
 
37
37
  it 'is aliased as #bytesize' do
38
38
  buffer << 'foo'
39
- buffer.bytesize.should == 3
39
+ buffer.bytesize.should eq(3)
40
40
  end
41
41
  end
42
42
 
@@ -67,19 +67,19 @@ module Ione
67
67
  end
68
68
 
69
69
  it 'stores its bytes as binary' do
70
- buffer.append('hällö').length.should == 7
71
- buffer.to_s.encoding.should == ::Encoding::BINARY
70
+ buffer.append('hällö').length.should eq(7)
71
+ buffer.to_s.encoding.should eq(::Encoding::BINARY)
72
72
  end
73
73
 
74
74
  it 'handles appending with multibyte strings' do
75
75
  buffer.append('hello')
76
76
  buffer.append('würld')
77
- buffer.to_s.should == 'hellowürld'.force_encoding(::Encoding::BINARY)
77
+ buffer.to_s.should eq('hellowürld'.force_encoding(::Encoding::BINARY))
78
78
  end
79
79
 
80
80
  it 'handles appending with another byte buffer' do
81
81
  buffer.append('hello ').append(ByteBuffer.new('world'))
82
- buffer.to_s.should == 'hello world'
82
+ buffer.to_s.should eq('hello world')
83
83
  end
84
84
  end
85
85
 
@@ -105,7 +105,7 @@ module Ione
105
105
  b2 = described_class.new
106
106
  b1.append('foo')
107
107
  b2.append('foo')
108
- b1.should == b2
108
+ b1.should eq(b2)
109
109
  end
110
110
 
111
111
  it 'is equal to another buffer when both are empty' do
@@ -121,7 +121,7 @@ module Ione
121
121
  b2 = described_class.new
122
122
  b1.append('foo')
123
123
  b2.append('foo')
124
- b1.hash.should == b2.hash
124
+ b1.hash.should eq(b2.hash)
125
125
  end
126
126
 
127
127
  it 'is not equal to the hash code of another buffer with other contents' do
@@ -135,26 +135,26 @@ module Ione
135
135
  it 'is equal to the hash code of another buffer when both are empty' do
136
136
  b1 = described_class.new
137
137
  b2 = described_class.new
138
- b1.hash.should == b2.hash
138
+ b1.hash.should eq(b2.hash)
139
139
  end
140
140
  end
141
141
 
142
142
  describe '#to_s' do
143
143
  it 'returns the bytes' do
144
- buffer.append('hello world').to_s.should == 'hello world'
144
+ buffer.append('hello world').to_s.should eq('hello world')
145
145
  end
146
146
  end
147
147
 
148
148
  describe '#to_str' do
149
149
  it 'returns the bytes' do
150
- buffer.append('hello world').to_str.should == 'hello world'
150
+ buffer.append('hello world').to_str.should eq('hello world')
151
151
  end
152
152
  end
153
153
 
154
154
  describe '#inspect' do
155
155
  it 'returns the bytes wrapped in ByteBuffer(...)' do
156
156
  buffer.append("\xca\xfe")
157
- buffer.inspect.should == '#<Ione::ByteBuffer: "\xCA\xFE">'
157
+ buffer.inspect.should eq('#<Ione::ByteBuffer: "\xCA\xFE">')
158
158
  end
159
159
  end
160
160
 
@@ -162,12 +162,12 @@ module Ione
162
162
  it 'discards the specified number of bytes from the front of the buffer' do
163
163
  buffer.append('hello world')
164
164
  buffer.discard(4)
165
- buffer.should == ByteBuffer.new('o world')
165
+ buffer.should eq(ByteBuffer.new('o world'))
166
166
  end
167
167
 
168
168
  it 'returns the byte buffer' do
169
169
  buffer.append('hello world')
170
- buffer.discard(4).should == ByteBuffer.new('o world')
170
+ buffer.discard(4).should eq(ByteBuffer.new('o world'))
171
171
  end
172
172
 
173
173
  it 'raises an error if the number of bytes in the buffer is fewer than the number to discard' do
@@ -185,14 +185,14 @@ module Ione
185
185
  describe '#read' do
186
186
  it 'returns the specified number of bytes, as a string' do
187
187
  buffer.append('hello')
188
- buffer.read(4).should == 'hell'
188
+ buffer.read(4).should eq('hell')
189
189
  end
190
190
 
191
191
  it 'removes the bytes from the buffer' do
192
192
  buffer.append('hello')
193
193
  buffer.read(3)
194
- buffer.should == ByteBuffer.new('lo')
195
- buffer.read(2).should == 'lo'
194
+ buffer.should eq(ByteBuffer.new('lo'))
195
+ buffer.read(2).should eq('lo')
196
196
  end
197
197
 
198
198
  it 'raises an error if there are not enough bytes' do
@@ -208,22 +208,22 @@ module Ione
208
208
 
209
209
  it 'returns a string with binary encoding' do
210
210
  buffer.append('hello')
211
- buffer.read(4).encoding.should == ::Encoding::BINARY
211
+ buffer.read(4).encoding.should eq(::Encoding::BINARY)
212
212
  buffer.append('∆')
213
- buffer.read(2).encoding.should == ::Encoding::BINARY
213
+ buffer.read(2).encoding.should eq(::Encoding::BINARY)
214
214
  end
215
215
  end
216
216
 
217
217
  describe '#read_int' do
218
218
  it 'returns the first four bytes interpreted as an int' do
219
219
  buffer.append("\xca\xfe\xba\xbe\x01")
220
- buffer.read_int.should == 0xcafebabe
220
+ buffer.read_int.should eq(0xcafebabe)
221
221
  end
222
222
 
223
223
  it 'removes the bytes from the buffer' do
224
224
  buffer.append("\xca\xfe\xba\xbe\x01")
225
225
  buffer.read_int
226
- buffer.should == ByteBuffer.new("\x01")
226
+ buffer.should eq(ByteBuffer.new("\x01"))
227
227
  end
228
228
 
229
229
  it 'raises an error if there are not enough bytes' do
@@ -235,13 +235,13 @@ module Ione
235
235
  describe '#read_short' do
236
236
  it 'returns the first two bytes interpreted as a short' do
237
237
  buffer.append("\xca\xfe\x01")
238
- buffer.read_short.should == 0xcafe
238
+ buffer.read_short.should eq(0xcafe)
239
239
  end
240
240
 
241
241
  it 'removes the bytes from the buffer' do
242
242
  buffer.append("\xca\xfe\x01")
243
243
  buffer.read_short
244
- buffer.should == ByteBuffer.new("\x01")
244
+ buffer.should eq(ByteBuffer.new("\x01"))
245
245
  end
246
246
 
247
247
  it 'raises an error if there are not enough bytes' do
@@ -253,14 +253,14 @@ module Ione
253
253
  describe '#read_byte' do
254
254
  it 'returns the first bytes interpreted as an int' do
255
255
  buffer.append("\x10\x01")
256
- buffer.read_byte.should == 0x10
257
- buffer.read_byte.should == 0x01
256
+ buffer.read_byte.should eq(0x10)
257
+ buffer.read_byte.should eq(0x01)
258
258
  end
259
259
 
260
260
  it 'removes the byte from the buffer' do
261
261
  buffer.append("\x10\x01")
262
262
  buffer.read_byte
263
- buffer.should == ByteBuffer.new("\x01")
263
+ buffer.should eq(ByteBuffer.new("\x01"))
264
264
  end
265
265
 
266
266
  it 'raises an error if there are no bytes' do
@@ -269,8 +269,8 @@ module Ione
269
269
 
270
270
  it 'can interpret the byte as signed' do
271
271
  buffer.append("\x81\x02")
272
- buffer.read_byte(true).should == -127
273
- buffer.read_byte(true).should == 2
272
+ buffer.read_byte(true).should eq(-127)
273
+ buffer.read_byte(true).should eq(2)
274
274
  end
275
275
  end
276
276
 
@@ -278,14 +278,14 @@ module Ione
278
278
  it 'changes the bytes at the specified location' do
279
279
  buffer.append('foo bar')
280
280
  buffer.update(4, 'baz')
281
- buffer.to_s.should == 'foo baz'
281
+ buffer.to_s.should eq('foo baz')
282
282
  end
283
283
 
284
284
  it 'handles updates after a read' do
285
285
  buffer.append('foo bar')
286
286
  buffer.read(1)
287
287
  buffer.update(3, 'baz')
288
- buffer.to_s.should == 'oo baz'
288
+ buffer.to_s.should eq('oo baz')
289
289
  end
290
290
 
291
291
  it 'handles updates after multiple reads and appends' do
@@ -295,7 +295,7 @@ module Ione
295
295
  buffer.update(4, 'baz')
296
296
  buffer.append('yyyy')
297
297
  buffer.read(1)
298
- buffer.to_s.should == 'o bbazyyyy'
298
+ buffer.to_s.should eq('o bbazyyyy')
299
299
  end
300
300
 
301
301
  it 'returns itself' do
@@ -335,12 +335,12 @@ module Ione
335
335
  describe '#index' do
336
336
  it 'returns the first index of the specified substring' do
337
337
  buffer.append('fizz buzz')
338
- buffer.index('zz').should == 2
338
+ buffer.index('zz').should eq(2)
339
339
  end
340
340
 
341
341
  it 'returns the first index of the specified substring, after the specified index' do
342
342
  buffer.append('fizz buzz')
343
- buffer.index('zz', 3).should == 7
343
+ buffer.index('zz', 3).should eq(7)
344
344
  end
345
345
 
346
346
  it 'returns nil when the substring is not found' do
@@ -352,14 +352,14 @@ module Ione
352
352
  buffer.append('foo bar')
353
353
  buffer.read(1)
354
354
  buffer.append(' baz baz')
355
- buffer.index('baz', 8).should == 11
355
+ buffer.index('baz', 8).should eq(11)
356
356
  end
357
357
 
358
358
  it 'returns the first index when the matching substring spans the read and write buffer' do
359
359
  buffer.append('foo bar')
360
360
  buffer.read(1)
361
361
  buffer.append('bar barbar')
362
- buffer.index('barbar', 0).should == 3
362
+ buffer.index('barbar', 0).should eq(3)
363
363
  end
364
364
 
365
365
  it 'returns nil when the substring does not fit in the search space' do
@@ -91,7 +91,7 @@ module Ione
91
91
  promise.try do
92
92
  3 + 4
93
93
  end
94
- promise.future.value.should == 7
94
+ promise.future.value.should eq(7)
95
95
  end
96
96
 
97
97
  it 'fails the promise when the block raises an error' do
@@ -105,7 +105,7 @@ module Ione
105
105
  promise.try(:foo, 3) do |a, b|
106
106
  a.length + b
107
107
  end
108
- promise.future.value.should == 6
108
+ promise.future.value.should eq(6)
109
109
  end
110
110
 
111
111
  it 'returns nil' do
@@ -216,8 +216,8 @@ module Ione
216
216
  future.on_complete { |v, _| v1 = v }
217
217
  future.on_complete { |v, _| v2 = v }
218
218
  promise.fulfill('bar')
219
- v1.should == 'bar'
220
- v2.should == 'bar'
219
+ v1.should eq('bar')
220
+ v2.should eq('bar')
221
221
  end
222
222
 
223
223
  it 'passes future as the third parameter to the block when it expects three arguments' do
@@ -319,15 +319,15 @@ module Ione
319
319
  future.on_complete { |f| raise 'Blurgh' }
320
320
  future.on_complete { |f| value = f.value }
321
321
  promise.fulfill('bar')
322
- value.should == 'bar'
322
+ value.should eq('bar')
323
323
  end
324
324
 
325
325
  it 'notifies all listeners when the promise fails, even when one raises an error' do
326
326
  err = nil
327
327
  future.on_complete { |f| raise 'Blurgh' }
328
- future.on_complete { |f| begin; f.value; rescue => err; e = err; end }
328
+ future.on_complete { |f| begin; f.value; rescue => e; err = e; end }
329
329
  promise.fail(error)
330
- err.message.should == 'bork'
330
+ err.message.should eq('bork')
331
331
  end
332
332
 
333
333
  it 'notifies listeners registered after the promise was fulfilled' do
@@ -335,7 +335,7 @@ module Ione
335
335
  promise.fulfill('bar')
336
336
  future.on_complete { |vv, ee, ff| v = vv; e = ee; f = ff }
337
337
  f.should equal(future)
338
- v.should == 'bar'
338
+ v.should eq('bar')
339
339
  e.should be_nil
340
340
  end
341
341
 
@@ -345,7 +345,7 @@ module Ione
345
345
  future.on_complete { |vv, ee, ff| v = vv; e = ee; f = ff }
346
346
  f.should equal(future)
347
347
  v.should be_nil
348
- e.message.should == 'bork'
348
+ e.message.should eq('bork')
349
349
  end
350
350
 
351
351
  it 'notifies listeners registered after the promise failed' do
@@ -376,8 +376,8 @@ module Ione
376
376
  future.on_value { |v| v1 = v }
377
377
  future.on_value { |v| v2 = v }
378
378
  promise.fulfill('bar')
379
- v1.should == 'bar'
380
- v2.should == 'bar'
379
+ v1.should eq('bar')
380
+ v2.should eq('bar')
381
381
  end
382
382
 
383
383
  it 'notifies all listeners even when one raises an error' do
@@ -385,7 +385,7 @@ module Ione
385
385
  future.on_value { |v| raise 'Blurgh' }
386
386
  future.on_value { |v| value = v }
387
387
  promise.fulfill('bar')
388
- value.should == 'bar'
388
+ value.should eq('bar')
389
389
  end
390
390
 
391
391
  it 'notifies listeners registered after the promise was resolved' do
@@ -393,8 +393,8 @@ module Ione
393
393
  promise.fulfill('bar')
394
394
  future.on_value { |v| v1 = v }
395
395
  future.on_value { |v| v2 = v }
396
- v1.should == 'bar'
397
- v2.should == 'bar'
396
+ v1.should eq('bar')
397
+ v2.should eq('bar')
398
398
  end
399
399
 
400
400
  it 'does not raise any error when the listener raises an error when already resolved' do
@@ -479,7 +479,7 @@ module Ione
479
479
  p.fulfill('bar')
480
480
  end
481
481
  d.value
482
- future.value.should == 'bar'
482
+ future.value.should eq('bar')
483
483
  end
484
484
 
485
485
  it 'blocks on #value until completed, when value is nil' do
@@ -506,7 +506,7 @@ module Ione
506
506
  end
507
507
  sleep 0.1
508
508
  promise.fulfill(:hello)
509
- listeners.map(&:value).should == Array.new(10, :hello)
509
+ listeners.map(&:value).should eq(Array.new(10, :hello))
510
510
  end
511
511
 
512
512
  it 'is aliased as #get' do
@@ -524,7 +524,7 @@ module Ione
524
524
  f = p.future.map { |v| v * 2 }
525
525
  f.on_value { |v| mapped_value = v }
526
526
  p.fulfill(3)
527
- mapped_value.should == 3 * 2
527
+ mapped_value.should eq(3 * 2)
528
528
  end
529
529
 
530
530
  it 'will be resolved with the specified value' do
@@ -533,7 +533,7 @@ module Ione
533
533
  f = p.future.map(7)
534
534
  f.on_value { |v| mapped_value = v }
535
535
  p.fulfill(3)
536
- mapped_value.should == 7
536
+ mapped_value.should eq(7)
537
537
  end
538
538
 
539
539
  it 'will be resolved with the result of the given block, even if a value is specified' do
@@ -542,7 +542,7 @@ module Ione
542
542
  f = p.future.map(7) { |v| v * 2 }
543
543
  f.on_value { |v| mapped_value = v }
544
544
  p.fulfill(3)
545
- mapped_value.should == 3 * 2
545
+ mapped_value.should eq(3 * 2)
546
546
  end
547
547
 
548
548
  it 'will be resolved with nil when neither value nor block is specified' do
@@ -581,7 +581,7 @@ module Ione
581
581
  p = Promise.new
582
582
  f = p.future.flat_map { |v| Future.resolved(v * 2) }
583
583
  p.fulfill(3)
584
- f.value.should == 3 * 2
584
+ f.value.should eq(3 * 2)
585
585
  end
586
586
 
587
587
  it 'fails when the block raises an error' do
@@ -598,7 +598,7 @@ module Ione
598
598
  p = Promise.new
599
599
  f = p.future.flat_map { fake_future }
600
600
  p.fulfill
601
- f.value.should == :foobar
601
+ f.value.should eq(:foobar)
602
602
  end
603
603
  end
604
604
 
@@ -608,7 +608,7 @@ module Ione
608
608
  p = Promise.new
609
609
  f = p.future.then { |v| Future.resolved(v * 2) }
610
610
  p.fulfill(3)
611
- f.value.should == 3 * 2
611
+ f.value.should eq(3 * 2)
612
612
  end
613
613
  end
614
614
 
@@ -620,7 +620,7 @@ module Ione
620
620
  p = Promise.new
621
621
  f = p.future.then { |v| fake_future }
622
622
  p.fulfill
623
- f.value.should == :foobar
623
+ f.value.should eq(:foobar)
624
624
  end
625
625
  end
626
626
 
@@ -641,7 +641,7 @@ module Ione
641
641
  p = Promise.new
642
642
  f = p.future.then { |v| v * 2 }
643
643
  p.fulfill(3)
644
- f.value.should == 3 * 2
644
+ f.value.should eq(3 * 2)
645
645
  end
646
646
  end
647
647
 
@@ -662,21 +662,21 @@ module Ione
662
662
  p = Promise.new
663
663
  f = p.future.recover { 'foo' }
664
664
  p.fail(error)
665
- f.value.should == 'foo'
665
+ f.value.should eq('foo')
666
666
  end
667
667
 
668
668
  it 'resolves to a specfied value when the source future fails' do
669
669
  p = Promise.new
670
670
  f = p.future.recover('bar')
671
671
  p.fail(error)
672
- f.value.should == 'bar'
672
+ f.value.should eq('bar')
673
673
  end
674
674
 
675
675
  it 'resovles to a value created by the block even when a value is specified when the source future fails' do
676
676
  p = Promise.new
677
677
  f = p.future.recover('bar') { 'foo' }
678
678
  p.fail(error)
679
- f.value.should == 'foo'
679
+ f.value.should eq('foo')
680
680
  end
681
681
 
682
682
  it 'resolves to nil value when no value nor block is specified and the source future fails' do
@@ -690,14 +690,14 @@ module Ione
690
690
  p = Promise.new
691
691
  f = p.future.recover { |e| e.message }
692
692
  p.fail(error)
693
- f.value.should == error.message
693
+ f.value.should eq(error.message)
694
694
  end
695
695
 
696
696
  it 'resolves to the value of the source future when the source future is resolved' do
697
697
  p = Promise.new
698
698
  f = p.future.recover { 'foo' }
699
699
  p.fulfill('bar')
700
- f.value.should == 'bar'
700
+ f.value.should eq('bar')
701
701
  end
702
702
 
703
703
  it 'fails with the error raised in the given block' do
@@ -717,17 +717,16 @@ module Ione
717
717
  f = p1.future.fallback { p2.future }
718
718
  p1.fail(error)
719
719
  p2.fulfill('foo')
720
- f.value.should == 'foo'
720
+ f.value.should eq('foo')
721
721
  end
722
722
 
723
723
  it 'yields the error to the block' do
724
- p1 = Promise.new
725
- p2 = Promise.new
726
- f = p1.future.fallback do |error|
724
+ p = Promise.new
725
+ f = p.future.fallback do |error|
727
726
  Future.resolved(error.message)
728
727
  end
729
- p1.fail(error)
730
- f.value.should == error.message
728
+ p.fail(error)
729
+ f.value.should eq(error.message)
731
730
  end
732
731
 
733
732
  it 'is resolved with the value of the source future when the source future fullfills' do
@@ -736,7 +735,7 @@ module Ione
736
735
  f = p1.future.fallback { p2.future }
737
736
  p2.fulfill('bar')
738
737
  p1.fulfill('foo')
739
- f.value.should == 'foo'
738
+ f.value.should eq('foo')
740
739
  end
741
740
 
742
741
  it 'fails when the block raises an error' do
@@ -761,7 +760,7 @@ module Ione
761
760
  p = Promise.new
762
761
  f = p.future.fallback { fake_future }
763
762
  p.fail(error)
764
- f.value.should == 'foo'
763
+ f.value.should eq('foo')
765
764
  end
766
765
  end
767
766
  end
@@ -771,7 +770,7 @@ module Ione
771
770
  future = Future.traverse([1, 2, 3]) do |element|
772
771
  Future.resolved(element * 2)
773
772
  end
774
- future.value.should == [2, 4, 6]
773
+ future.value.should eq([2, 4, 6])
775
774
  end
776
775
 
777
776
  it 'fails if any of the source futures fail' do
@@ -800,12 +799,12 @@ module Ione
800
799
  fake_future = double(:fake_future)
801
800
  fake_future.stub(:on_complete) { |&listener| listener.call(:foobar, nil) }
802
801
  future = Future.traverse([1, 2, 3]) { fake_future }
803
- future.value.should == [:foobar, :foobar, :foobar]
802
+ future.value.should eq([:foobar, :foobar, :foobar])
804
803
  end
805
804
 
806
805
  it 'accepts an enumerable of values' do
807
806
  future = Future.traverse([1, 2, 3].to_enum) { |v| Future.resolved(v * 2) }
808
- future.value.should == [2, 4, 6]
807
+ future.value.should eq([2, 4, 6])
809
808
  end
810
809
  end
811
810
 
@@ -819,7 +818,7 @@ module Ione
819
818
  future = Future.reduce(futures, {}) do |accumulator, value|
820
819
  accumulator.merge(value)
821
820
  end
822
- future.value.should == {'foo' => 'bar', 'qux' => 'baz', 'hello' => 'world'}
821
+ future.value.should eq({'foo' => 'bar', 'qux' => 'baz', 'hello' => 'world'})
823
822
  end
824
823
 
825
824
  it 'accepts boolean accumulators' do
@@ -830,7 +829,7 @@ module Ione
830
829
  future = Future.reduce(futures, false) do |accumulator, value|
831
830
  accumulator || value.empty?
832
831
  end
833
- future.value.should == true
832
+ future.value.should eq(true)
834
833
  end
835
834
 
836
835
  it 'calls the block with the values in the order of the source futures' do
@@ -844,7 +843,7 @@ module Ione
844
843
  promises[2].fulfill(2)
845
844
  promises[4].fulfill(4)
846
845
  promises[3].fulfill(3)
847
- future.value.should == [0, 1, 2, 3, 4]
846
+ future.value.should eq([0, 1, 2, 3, 4])
848
847
  end
849
848
 
850
849
  it 'uses the first value as initial value when no intial value is given' do
@@ -856,7 +855,7 @@ module Ione
856
855
  promises[1].fulfill(2)
857
856
  promises[0].fulfill(1)
858
857
  promises[2].fulfill(3)
859
- future.value.should == 6
858
+ future.value.should eq(6)
860
859
  end
861
860
 
862
861
  it 'fails if any of the source futures fail' do
@@ -893,7 +892,7 @@ module Ione
893
892
 
894
893
  context 'when the list of futures is empty' do
895
894
  it 'returns a future that resolves to the initial value' do
896
- Future.reduce([], :foo).value.should == :foo
895
+ Future.reduce([], :foo).value.should eq(:foo)
897
896
  end
898
897
 
899
898
  it 'returns a future that resolves to nil there is also no initial value' do
@@ -907,13 +906,13 @@ module Ione
907
906
  ff2.stub(:on_complete) { |&listener| listener.call(2, nil) }
908
907
  ff3.stub(:on_complete) { |&listener| listener.call(3, nil) }
909
908
  future = Future.reduce([ff1, ff2, ff3], 0) { |sum, n| sum + n }
910
- future.value.should == 6
909
+ future.value.should eq(6)
911
910
  end
912
911
 
913
912
  it 'accepts an enumerable of futures' do
914
913
  futures = [Future.resolved(1), Future.resolved(2), Future.resolved(3)].to_enum
915
914
  future = Future.reduce(futures, 0) { |sum, n| sum + n }
916
- future.value.should == 6
915
+ future.value.should eq(6)
917
916
  end
918
917
 
919
918
  it 'handles a really long list of futures' do
@@ -932,7 +931,7 @@ module Ione
932
931
  promises[1].fulfill(1)
933
932
  promises[0].fulfill(0)
934
933
  promises[2].fulfill(2)
935
- future.value.should == [1, 0, 2]
934
+ future.value.should eq([1, 0, 2])
936
935
  end
937
936
 
938
937
  it 'fails if any of the source futures fail' do
@@ -963,7 +962,7 @@ module Ione
963
962
 
964
963
  context 'when the list of futures is empty' do
965
964
  it 'returns a future that resolves to the initial value' do
966
- Future.reduce([], :foo, ordered: false).value.should == :foo
965
+ Future.reduce([], :foo, ordered: false).value.should eq(:foo)
967
966
  end
968
967
 
969
968
  it 'returns a future that resolves to nil there is also no initial value' do
@@ -1088,7 +1087,7 @@ module Ione
1088
1087
  p2.fulfill(2)
1089
1088
  p1.fulfill(1)
1090
1089
  p3.fulfill(3)
1091
- f.value.should == [1, 2, 3]
1090
+ f.value.should eq([1, 2, 3])
1092
1091
  end
1093
1092
 
1094
1093
  it 'fails if any of the source futures fail' do
@@ -1106,20 +1105,20 @@ module Ione
1106
1105
  end
1107
1106
 
1108
1107
  it 'completes with an empty list when no futures are given' do
1109
- Future.all.value.should == []
1108
+ Future.all.value.should eq([])
1110
1109
  end
1111
1110
 
1112
1111
  it 'completes with an empty list when an empty list is given' do
1113
- Future.all([]).value.should == []
1112
+ Future.all([]).value.should eq([])
1114
1113
  end
1115
1114
 
1116
1115
  it 'completes with an empty list when an empty enumerable is given' do
1117
- Future.all([].to_enum).value.should == []
1116
+ Future.all([].to_enum).value.should eq([])
1118
1117
  end
1119
1118
 
1120
1119
  it 'completes with a list of one item when a single future is given' do
1121
1120
  f = Future.resolved(1)
1122
- Future.all(f).value.should == [1]
1121
+ Future.all(f).value.should eq([1])
1123
1122
  end
1124
1123
 
1125
1124
  it 'accepts a list of futures' do
@@ -1152,7 +1151,7 @@ module Ione
1152
1151
  ff2.stub(:on_complete) { |&listener| listener.call(2, nil) }
1153
1152
  ff3.stub(:on_complete) { |&listener| listener.call(3, nil) }
1154
1153
  future = Future.all(ff1, ff2, ff3)
1155
- future.value.should == [1, 2, 3]
1154
+ future.value.should eq([1, 2, 3])
1156
1155
  end
1157
1156
  end
1158
1157
  end
@@ -1174,7 +1173,7 @@ module Ione
1174
1173
  p3 = Promise.new
1175
1174
  f = Future.first(p1.future, p2.future, p3.future)
1176
1175
  p2.fulfill('foo')
1177
- f.value.should == 'foo'
1176
+ f.value.should eq('foo')
1178
1177
  end
1179
1178
 
1180
1179
  it 'is unaffected by the fullfillment of the other futures' do
@@ -1226,7 +1225,7 @@ module Ione
1226
1225
  end
1227
1226
 
1228
1227
  it 'completes with the value of the given future, when only one is given' do
1229
- Future.first(Future.resolved('foo')).value.should == 'foo'
1228
+ Future.first(Future.resolved('foo')).value.should eq('foo')
1230
1229
  end
1231
1230
 
1232
1231
  it 'accepts a list of futures' do
@@ -1250,7 +1249,7 @@ module Ione
1250
1249
  ff1.stub(:on_complete) { |&listener| listener.call(1, nil) }
1251
1250
  ff2.stub(:on_complete) { |&listener| listener.call(2, nil) }
1252
1251
  future = Future.first(ff1, ff2)
1253
- future.value.should == 1
1252
+ future.value.should eq(1)
1254
1253
  end
1255
1254
  end
1256
1255
  end
@@ -1276,14 +1275,14 @@ module Ione
1276
1275
  it 'calls its value callbacks immediately' do
1277
1276
  value = nil
1278
1277
  future.on_value { |v| value = v }
1279
- value.should == 'hello world'
1278
+ value.should eq('hello world')
1280
1279
  end
1281
1280
 
1282
1281
  it 'calls its complete callbacks immediately' do
1283
1282
  f, v = nil, nil
1284
1283
  future.on_complete { |vv, _, ff| f = ff; v = vv }
1285
1284
  f.should equal(future)
1286
- v.should == 'hello world'
1285
+ v.should eq('hello world')
1287
1286
  end
1288
1287
 
1289
1288
  it 'calls its complete callbacks with the right arity' do
@@ -1293,11 +1292,11 @@ module Ione
1293
1292
  future.on_complete { |vv, ee, ff| f2 = ff }
1294
1293
  f1.should equal(future)
1295
1294
  f2.should equal(future)
1296
- v.should == 'hello world'
1295
+ v.should eq('hello world')
1297
1296
  end
1298
1297
 
1299
1298
  it 'does not block on #value' do
1300
- future.value.should == 'hello world'
1299
+ future.value.should eq('hello world')
1301
1300
  end
1302
1301
 
1303
1302
  it 'defaults to the value nil' do
@@ -1327,14 +1326,14 @@ module Ione
1327
1326
  it 'call its failure callbacks immediately' do
1328
1327
  error = nil
1329
1328
  future.on_failure { |e| error = e }
1330
- error.message.should == 'bork'
1329
+ error.message.should eq('bork')
1331
1330
  end
1332
1331
 
1333
1332
  it 'calls its complete callbacks immediately' do
1334
1333
  f, e = nil, nil
1335
1334
  future.on_complete { |_, ee, ff| f = ff; e = ee }
1336
1335
  f.should equal(future)
1337
- e.message.should == 'bork'
1336
+ e.message.should eq('bork')
1338
1337
  end
1339
1338
 
1340
1339
  it 'calls its complete callbacks with the right arity' do
@@ -1344,7 +1343,7 @@ module Ione
1344
1343
  future.on_complete { |vv, ee, ff| f2 = ff }
1345
1344
  f1.should equal(future)
1346
1345
  f2.should equal(future)
1347
- e.message.should == 'bork'
1346
+ e.message.should eq('bork')
1348
1347
  end
1349
1348
 
1350
1349
  it 'does not block on #value' do
@@ -17,9 +17,9 @@ module Ione
17
17
  it 'returns the number of items in the heap' do
18
18
  heap.push(13)
19
19
  heap.push(100)
20
- heap.size.should == 2
20
+ heap.size.should eq(2)
21
21
  heap.push(101)
22
- heap.size.should == 3
22
+ heap.size.should eq(3)
23
23
  end
24
24
  end
25
25
 
@@ -40,7 +40,7 @@ module Ione
40
40
  heap.push(3)
41
41
  heap.push(6)
42
42
  heap.push(5)
43
- heap.size.should == 4
43
+ heap.size.should eq(4)
44
44
  end
45
45
 
46
46
  it 'is aliased as #<<' do
@@ -48,14 +48,14 @@ module Ione
48
48
  heap << 3
49
49
  heap << 6
50
50
  heap << 5
51
- heap.size.should == 4
51
+ heap.size.should eq(4)
52
52
  end
53
53
 
54
54
  it 'does not add duplicates' do
55
55
  heap << 3
56
56
  heap << 3
57
57
  heap << 3
58
- heap.size.should == 1
58
+ heap.size.should eq(1)
59
59
  end
60
60
  end
61
61
 
@@ -66,21 +66,21 @@ module Ione
66
66
 
67
67
  it 'returns the only item when there is only one' do
68
68
  heap.push(3)
69
- heap.peek.should == 3
69
+ heap.peek.should eq(3)
70
70
  end
71
71
 
72
72
  it 'returns the smallest item' do
73
73
  heap.push(10)
74
74
  heap.push(3)
75
75
  heap.push(7)
76
- heap.peek.should == 3
76
+ heap.peek.should eq(3)
77
77
  end
78
78
 
79
79
  it 'does not remove the item from the heap' do
80
80
  heap.push(3)
81
- heap.peek.should == 3
82
- heap.peek.should == 3
83
- heap.peek.should == 3
81
+ heap.peek.should eq(3)
82
+ heap.peek.should eq(3)
83
+ heap.peek.should eq(3)
84
84
  end
85
85
  end
86
86
 
@@ -91,7 +91,7 @@ module Ione
91
91
 
92
92
  it 'returns and removes the only item when there is only one' do
93
93
  heap.push(3)
94
- heap.pop.should == 3
94
+ heap.pop.should eq(3)
95
95
  heap.should be_empty
96
96
  end
97
97
 
@@ -99,14 +99,14 @@ module Ione
99
99
  heap.push(10)
100
100
  heap.push(3)
101
101
  heap.push(7)
102
- heap.pop.should == 3
103
- heap.pop.should == 7
104
- heap.size.should == 1
102
+ heap.pop.should eq(3)
103
+ heap.pop.should eq(7)
104
+ heap.size.should eq(1)
105
105
  end
106
106
 
107
107
  it 'removes the item from the heap' do
108
108
  heap.push(3)
109
- heap.pop.should == 3
109
+ heap.pop.should eq(3)
110
110
  heap.pop.should be_nil
111
111
  end
112
112
  end
@@ -125,8 +125,8 @@ module Ione
125
125
  heap.push(101)
126
126
  heap.delete(4)
127
127
  heap.pop
128
- heap.peek.should == 100
129
- heap.size.should == 2
128
+ heap.peek.should eq(100)
129
+ heap.size.should eq(2)
130
130
  end
131
131
 
132
132
  it 'removes the last item from the heap' do
@@ -155,7 +155,7 @@ module Ione
155
155
  heap.push(3)
156
156
  heap.push(4)
157
157
  heap.push(5)
158
- heap.delete(4).should == 4
158
+ heap.delete(4).should eq(4)
159
159
  end
160
160
 
161
161
  it 'returns nil when the item is not found' do
@@ -174,8 +174,8 @@ module Ione
174
174
  acceptor.bind
175
175
  acceptor.read
176
176
  accepted_handlers.should have(1).item
177
- accepted_handlers.first.host.should == 'example.com'
178
- accepted_handlers.first.port.should == 3333
177
+ accepted_handlers.first.host.should eq('example.com')
178
+ accepted_handlers.first.port.should eq(3333)
179
179
  end
180
180
 
181
181
  it 'passes the unblocker along to the connection handler' do
@@ -197,9 +197,9 @@ module Ione
197
197
  acceptor.on_accept { |c| received_connection2 = c }
198
198
  acceptor.bind
199
199
  acceptor.read
200
- received_connection1.host.should == 'example.com'
201
- received_connection2.host.should == 'example.com'
202
- received_connection2.port.should == 3333
200
+ received_connection1.host.should eq('example.com')
201
+ received_connection2.host.should eq('example.com')
202
+ received_connection2.port.should eq(3333)
203
203
  end
204
204
 
205
205
  it 'ignores exceptions raised by the connection callback' do
@@ -40,7 +40,7 @@ shared_examples_for 'a connection' do |options|
40
40
  handler.on_closed { calls += 1 }
41
41
  handler.close
42
42
  handler.close
43
- calls.should == 1
43
+ calls.should eq(1)
44
44
  end
45
45
 
46
46
  it 'returns false if it did nothing' do
@@ -238,7 +238,7 @@ shared_examples_for 'a connection' do |options|
238
238
  data = nil
239
239
  handler.on_data { |d| data = d }
240
240
  handler.read
241
- data.should == 'foo bar'
241
+ data.should eq('foo bar')
242
242
  end
243
243
 
244
244
  context 'when #read_nonblock raises an error' do
@@ -85,7 +85,7 @@ module Ione
85
85
  stopped_future.value
86
86
  restarted_future.value
87
87
  begin
88
- sequence.should == [:stopped, :restarted]
88
+ sequence.should eq([:stopped, :restarted])
89
89
  ensure
90
90
  reactor.stop
91
91
  barrier.push(nil) while reactor.running?
@@ -136,8 +136,6 @@ module Ione
136
136
 
137
137
  context 'when already started' do
138
138
  it 'is not started again' do
139
- calls = 0
140
- lock = Mutex.new
141
139
  ticks = Queue.new
142
140
  barrier = Queue.new
143
141
  selector.handler do
@@ -239,7 +237,7 @@ module Ione
239
237
  reactor.on_error { |e| error = e }
240
238
  reactor.start
241
239
  await { error }
242
- error.message.should == 'Blurgh'
240
+ error.message.should eq('Blurgh')
243
241
  end
244
242
 
245
243
  it 'calls the listener immediately when the reactor has already crashed' do
@@ -269,16 +267,16 @@ module Ione
269
267
  barrier.push(nil)
270
268
  await { !reactor.running? }
271
269
  reactor.on_error { calls << :pre_restarted }
272
- calls.should == [
270
+ calls.should eq([
273
271
  :pre_started,
274
272
  :post_started,
275
273
  :pre_restarted,
276
- ]
274
+ ])
277
275
  reactor.start
278
276
  reactor.on_error { calls << :post_restarted }
279
277
  barrier.push(nil)
280
278
  await { !reactor.running? }
281
- calls.should == [
279
+ calls.should eq([
282
280
  :pre_started,
283
281
  :post_started,
284
282
  :pre_restarted,
@@ -286,7 +284,7 @@ module Ione
286
284
  :post_started,
287
285
  :pre_restarted,
288
286
  :post_restarted,
289
- ]
287
+ ])
290
288
  end
291
289
  end
292
290
 
@@ -303,19 +301,19 @@ module Ione
303
301
  it 'returns a future that resolves to what the given block returns' do
304
302
  reactor.start.value
305
303
  x = reactor.connect('example.com', 9999, 5) { :foo }.value
306
- x.should == :foo
304
+ x.should eq(:foo)
307
305
  end
308
306
 
309
307
  it 'defaults to 5 as the connection timeout' do
310
308
  reactor.start.value
311
309
  connection = reactor.connect('example.com', 9999).value
312
- connection.connection_timeout.should == 5
310
+ connection.connection_timeout.should eq(5)
313
311
  end
314
312
 
315
313
  it 'takes the connection timeout from the :timeout option' do
316
314
  reactor.start.value
317
315
  connection = reactor.connect('example.com', 9999, timeout: 9).value
318
- connection.connection_timeout.should == 9
316
+ connection.connection_timeout.should eq(9)
319
317
  end
320
318
 
321
319
  it 'returns the connection when no block is given' do
@@ -379,19 +377,19 @@ module Ione
379
377
  it 'returns a future that resolves to what the given block returns' do
380
378
  reactor.start.value
381
379
  x = reactor.bind(ENV['SERVER_HOST'], port, 5) { |acceptor| :foo }.value
382
- x.should == :foo
380
+ x.should eq(:foo)
383
381
  end
384
382
 
385
383
  it 'defaults to a backlog of 5' do
386
384
  reactor.start.value
387
385
  acceptor = reactor.bind(ENV['SERVER_HOST'], port).value
388
- acceptor.backlog.should == 5
386
+ acceptor.backlog.should eq(5)
389
387
  end
390
388
 
391
389
  it 'takes the backlog from the :backlog option' do
392
390
  reactor.start.value
393
391
  acceptor = reactor.bind(ENV['SERVER_HOST'], port, backlog: 9).value
394
- acceptor.backlog.should == 9
392
+ acceptor.backlog.should eq(9)
395
393
  end
396
394
 
397
395
  it 'returns the acceptor when no block is given' do
@@ -7,7 +7,7 @@ module Ione
7
7
  module Io
8
8
  describe SslAcceptor do
9
9
  let :acceptor do
10
- described_class.new('example.com', 4321, backlog = 3, unblocker, reactor, ssl_context, socket_impl, ssl_socket_impl)
10
+ described_class.new('example.com', 4321, 3, unblocker, reactor, ssl_context, socket_impl, ssl_socket_impl)
11
11
  end
12
12
 
13
13
  let :unblocker do
@@ -80,8 +80,8 @@ module Ione
80
80
  acceptor.bind
81
81
  acceptor.read
82
82
  accepted_handlers.should have(1).item
83
- accepted_handlers.first.host.should == 'example.com'
84
- accepted_handlers.first.port.should == 3333
83
+ accepted_handlers.first.host.should eq('example.com')
84
+ accepted_handlers.first.port.should eq(3333)
85
85
  end
86
86
 
87
87
  it 'returns the raw socket from #to_io' do
@@ -124,7 +124,7 @@ module Ione
124
124
  end
125
125
  handler.connect
126
126
  handler.read
127
- read_sizes.drop(1).should == [read_sizes.first] * 3
127
+ read_sizes.drop(1).should eq([read_sizes.first] * 3)
128
128
  end
129
129
  else
130
130
  it 'reads and initial chunk of data' do
@@ -134,7 +134,7 @@ module Ione
134
134
  ssl_socket.stub(:read_nonblock).and_return('fooo')
135
135
  handler.connect
136
136
  handler.read
137
- data.should == ['fooo']
137
+ data.should eq(['fooo'])
138
138
  end
139
139
 
140
140
  it 'reads once, and then again with the value of #pending, until #pending returns zero' do
@@ -149,7 +149,7 @@ module Ione
149
149
  end
150
150
  handler.connect
151
151
  handler.read
152
- read_sizes.drop(1).should == [3, 2, 1]
152
+ read_sizes.drop(1).should eq([3, 2, 1])
153
153
  end
154
154
  end
155
155
 
@@ -23,4 +23,8 @@ unless ENV['COVERAGE'] == 'no' || RUBY_ENGINE == 'rbx'
23
23
  end
24
24
  end
25
25
 
26
+ RSpec.configure do |config|
27
+ config.warnings = true
28
+ end
29
+
26
30
  require 'ione'
@@ -11,6 +11,7 @@ class FakeServer
11
11
  @disconnects = 0
12
12
  @connections = []
13
13
  @received_bytes = ''
14
+ @running = false
14
15
  end
15
16
 
16
17
  def start(options={})
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ione
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Theo Hultberg
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-30 00:00:00.000000000 Z
11
+ date: 2016-10-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Reactive programming framework for Ruby, painless evented IO, futures
14
14
  and an efficient byte buffer
@@ -70,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
70
  version: '0'
71
71
  requirements: []
72
72
  rubyforge_project:
73
- rubygems_version: 2.2.2
73
+ rubygems_version: 2.4.5
74
74
  signing_key:
75
75
  specification_version: 4
76
76
  summary: Reactive programming framework for Ruby