celluloid-io 0.17.1 → 0.17.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,16 +1,16 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
- describe Celluloid::IO::UNIXSocket do
4
-
5
- if RUBY_PLATFORM == 'java'
3
+ RSpec.describe Celluloid::IO::UNIXSocket, library: :IO do
4
+ if RUBY_PLATFORM == "java"
6
5
  before(:each) do
7
6
  pending "jRuby support"
8
7
  fail "Avoid potential deadlock under jRuby"
9
8
  end
10
9
  end
11
10
 
12
- let(:payload) { 'ohai' }
11
+ let(:payload) { "ohai" }
13
12
  let(:example_port) { assign_port }
13
+ let(:logger) { Specs::FakeLogger.current }
14
14
 
15
15
  context "inside Celluloid::IO" do
16
16
  it "connects to UNIX servers" do
@@ -84,42 +84,45 @@ describe Celluloid::IO::UNIXSocket do
84
84
  end
85
85
 
86
86
  it "raises Errno::ENOENT when the connection is refused" do
87
- expect {
87
+ allow(logger).to receive(:crash).with("Actor crashed!", Errno::ENOENT)
88
+ expect do
88
89
  within_io_actor { Celluloid::IO::UNIXSocket.open(example_unix_sock) }
89
- }.to raise_error(Errno::ENOENT)
90
+ end.to raise_error(Errno::ENOENT)
90
91
  end
91
92
 
92
93
  it "raises EOFError when partial reading from a closed socket" do
94
+ allow(logger).to receive(:crash).with("Actor crashed!", EOFError)
93
95
  with_connected_unix_sockets do |subject, peer|
94
96
  peer.close
95
- expect {
97
+ expect do
96
98
  within_io_actor { subject.readpartial(payload.size) }
97
- }.to raise_error(EOFError)
99
+ end.to raise_error(EOFError)
98
100
  end
99
101
  end
100
102
 
101
- context 'eof?' do
103
+ context "eof?" do
102
104
  it "blocks actor then returns by close" do
103
105
  with_connected_sockets(example_port) do |subject, peer|
104
106
  started_at = Time.now
105
- Thread.new{ sleep 0.5; peer.close; }
107
+ Thread.new { sleep 0.5; peer.close; }
106
108
  within_io_actor { subject.eof? }
107
109
  expect(Time.now - started_at).to be > 0.5
108
110
  end
109
111
  end
110
-
112
+
111
113
  it "blocks until gets the next byte" do
114
+ allow(logger).to receive(:crash).with("Actor crashed!", Celluloid::TaskTimeout)
112
115
  with_connected_sockets(example_port) do |subject, peer|
113
116
  peer << 0x00
114
117
  peer.flush
115
- expect {
116
- within_io_actor {
118
+ expect do
119
+ within_io_actor do
117
120
  subject.read(1)
118
- Celluloid.timeout(0.5) {
121
+ Celluloid.timeout(0.5) do
119
122
  expect(subject.eof?).to be_falsey
120
- }
121
- }
122
- }.to raise_error(Celluloid::TaskTimeout)
123
+ end
124
+ end
125
+ end.to raise_error(Celluloid::TaskTimeout)
123
126
  end
124
127
  end
125
128
  end
@@ -1,9 +1,9 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
- describe Celluloid::IO do
3
+ RSpec.describe Celluloid::IO, library: :IO do
4
4
  context "copy_stream" do
5
5
  let(:host) { "127.0.0.1" }
6
- let(:port) { 23456 }
6
+ let(:port) { 23_456 }
7
7
 
8
8
  it "copies streams from Celluloid::IO sockets" do
9
9
  server = described_class::TCPServer.new(host, port)
@@ -12,10 +12,10 @@ describe Celluloid::IO do
12
12
  expect(peer).to be_a described_class::TCPSocket
13
13
 
14
14
  my_own_bits = File.read(__FILE__)
15
- file = File.open(__FILE__, 'r')
15
+ file = File.open(__FILE__, "r")
16
16
 
17
17
  described_class.copy_stream(file, peer)
18
18
  expect(client.read(file.stat.size)).to eq my_own_bits
19
19
  end
20
20
  end
21
- end
21
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,128 +1,11 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
- require 'celluloid/io'
4
- require 'celluloid/rspec'
5
- require 'coveralls'
1
+ require "rubygems"
2
+ require "bundler/setup"
6
3
 
7
- Coveralls.wear!
8
-
9
- MAX_TIME = 7
10
- MAX_ATTEMPTS = 20
11
-
12
- logfile = File.open(File.expand_path("../../log/test.log", __FILE__), 'a')
13
- logfile.sync = true
14
-
15
- logger = Celluloid.logger = Logger.new(logfile)
16
-
17
- Celluloid.shutdown_timeout = 1
18
-
19
- RSpec.configure do |config|
20
- config.filter_run :focus => true
21
- config.run_all_when_everything_filtered = true
22
-
23
- config.around(:each) { |example|
24
- Timeout.timeout(MAX_TIME) {
25
- example.run
26
- }
27
- }
28
-
29
- config.before do
30
- Celluloid.logger = logger
31
- Celluloid.shutdown
32
- Celluloid.boot
33
- FileUtils.rm("/tmp/cell_sock") if File.exist?("/tmp/cell_sock")
34
- end
35
- end
36
-
37
- class ExampleActor
38
- include Celluloid::IO
39
- execute_block_on_receiver :wrap
40
-
41
- def wrap
42
- yield
43
- end
44
- end
45
-
46
- # Would use Addrinfo(addr,0) but the class is missing/unstable on RBX.
47
- def assign_port
48
- port = 12000 + Random.rand(1024)
49
- attempts = 0
50
- begin
51
- socket = ::TCPServer.new(example_addr, port)
52
- rescue Errno::ECONNREFUSED, Errno::EADDRINUSE => ex
53
- raise ex.class.new("Tried #{attempts} times to assign port.") unless attempts < MAX_ATTEMPTS
54
- attempts += 1
55
- port += 1
56
- socket.close rescue nil
57
- sleep 0.126
58
- retry
59
- end
60
- return port
61
- ensure
62
- socket.close rescue nil
4
+ module Specs
5
+ ALLOW_SLOW_MAILBOXES = true # TODO: Remove hax.
63
6
  end
64
7
 
65
- def example_addr; '127.0.0.1'; end
66
- def example_unix_sock; '/tmp/cell_sock'; end
8
+ require "celluloid/rspec"
9
+ require "celluloid/io"
67
10
 
68
- def fixture_dir; Pathname.new File.expand_path("../fixtures", __FILE__); end
69
-
70
- def within_io_actor(&block)
71
- actor = ExampleActor.new
72
- actor.wrap(&block)
73
- ensure
74
- actor.terminate if actor.alive?
75
- end
76
-
77
- def with_tcp_server(port)
78
- server = Celluloid::IO::TCPServer.new(example_addr, port)
79
- begin
80
- yield server
81
- ensure
82
- server.close
83
- end
84
- end
85
-
86
- def with_unix_server
87
- server = Celluloid::IO::UNIXServer.open(example_unix_sock)
88
- begin
89
- yield server
90
- ensure
91
- server.close
92
- File.delete(example_unix_sock)
93
- end
94
- end
95
-
96
- def with_connected_sockets(port)
97
- with_tcp_server(port) do |server|
98
- client = Celluloid::IO::TCPSocket.new(example_addr, port)
99
- peer = server.accept
100
-
101
- begin
102
- yield peer, client
103
- ensure
104
- begin
105
- client.close
106
- peer.close
107
- rescue
108
- end
109
- end
110
- end
111
- end
112
-
113
- def with_connected_unix_sockets
114
- with_unix_server do |server|
115
- client = Celluloid::IO::UNIXSocket.new(example_unix_sock)
116
- peer = server.accept
117
-
118
- begin
119
- yield peer, client
120
- ensure
121
- begin
122
- client.close
123
- peer.close
124
- rescue
125
- end
126
- end
127
- end
128
- end
11
+ Dir[*Specs::INCLUDE_PATHS].map { |f| require f }
@@ -0,0 +1,12 @@
1
+ class WrapperActor
2
+ include Celluloid::IO
3
+ execute_block_on_receiver :wrap
4
+
5
+ def wrap
6
+ yield
7
+ end
8
+ end
9
+
10
+ def with_wrapper_actor
11
+ WrapperActor.new
12
+ end
@@ -0,0 +1,90 @@
1
+ def fixture_dir
2
+ Pathname.new File.expand_path("../../../fixtures", __FILE__)
3
+ end
4
+
5
+ # Would use Addrinfo(addr,0) but the class is missing/unstable on RBX.
6
+ def assign_port
7
+ port = 12_000 + Random.rand(1024)
8
+ attempts = 0
9
+ begin
10
+ socket = ::TCPServer.new(example_addr, port)
11
+ rescue Errno::ECONNREFUSED, Errno::EADDRINUSE => ex
12
+ raise ex.class.new("Tried #{attempts} times to assign port.") unless attempts < Specs::MAX_ATTEMPTS
13
+ attempts += 1
14
+ port += 1
15
+ socket.close rescue nil
16
+ sleep 0.126
17
+ retry
18
+ end
19
+ return port
20
+ ensure
21
+ socket.close rescue nil
22
+ end
23
+
24
+ def example_addr
25
+ "127.0.0.1"
26
+ end
27
+
28
+ def example_unix_sock
29
+ "/tmp/cell_sock"
30
+ end
31
+
32
+ def within_io_actor(&block)
33
+ actor = WrapperActor.new
34
+ actor.wrap(&block)
35
+ ensure
36
+ actor.terminate if actor.alive? rescue nil
37
+ end
38
+
39
+ def with_tcp_server(port)
40
+ server = Celluloid::IO::TCPServer.new(example_addr, port)
41
+ begin
42
+ yield server
43
+ ensure
44
+ server.close
45
+ end
46
+ end
47
+
48
+ def with_unix_server
49
+ server = Celluloid::IO::UNIXServer.open(example_unix_sock)
50
+ begin
51
+ yield server
52
+ ensure
53
+ server.close
54
+ File.delete(example_unix_sock)
55
+ end
56
+ end
57
+
58
+ def with_connected_sockets(port)
59
+ with_tcp_server(port) do |server|
60
+ client = Celluloid::IO::TCPSocket.new(example_addr, port)
61
+ peer = server.accept
62
+
63
+ begin
64
+ yield peer, client
65
+ ensure
66
+ begin
67
+ client.close
68
+ peer.close
69
+ rescue
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ def with_connected_unix_sockets
76
+ with_unix_server do |server|
77
+ client = Celluloid::IO::UNIXSocket.new(example_unix_sock)
78
+ peer = server.accept
79
+
80
+ begin
81
+ yield peer, client
82
+ ensure
83
+ begin
84
+ client.close
85
+ peer.close
86
+ rescue
87
+ end
88
+ end
89
+ end
90
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: celluloid-io
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.1
4
+ version: 0.17.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Arcieri
@@ -9,52 +9,57 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-24 00:00:00.000000000 Z
12
+ date: 2015-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- type: :runtime
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :development
17
22
  prerelease: false
18
23
  requirement: !ruby/object:Gem::Requirement
19
24
  requirements:
20
25
  - - ">="
21
26
  - !ruby/object:Gem::Version
22
27
  version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: nenv
23
30
  version_requirements: !ruby/object:Gem::Requirement
24
31
  requirements:
25
32
  - - ">="
26
33
  - !ruby/object:Gem::Version
27
34
  version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: nenv
30
- type: :runtime
35
+ type: :development
31
36
  prerelease: false
32
37
  requirement: !ruby/object:Gem::Requirement
33
38
  requirements:
34
39
  - - ">="
35
40
  - !ruby/object:Gem::Version
36
41
  version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: dotenv
37
44
  version_requirements: !ruby/object:Gem::Requirement
38
45
  requirements:
39
46
  - - ">="
40
47
  - !ruby/object:Gem::Version
41
48
  version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: dotenv
44
- type: :runtime
49
+ type: :development
45
50
  prerelease: false
46
51
  requirement: !ruby/object:Gem::Requirement
47
52
  requirements:
48
53
  - - ">="
49
54
  - !ruby/object:Gem::Version
50
55
  version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: benchmark_suite
51
58
  version_requirements: !ruby/object:Gem::Requirement
52
59
  requirements:
53
60
  - - ">="
54
61
  - !ruby/object:Gem::Version
55
62
  version: '0'
56
- - !ruby/object:Gem::Dependency
57
- name: benchmark_suite
58
63
  type: :development
59
64
  prerelease: false
60
65
  requirement: !ruby/object:Gem::Requirement
@@ -62,13 +67,13 @@ dependencies:
62
67
  - - ">="
63
68
  - !ruby/object:Gem::Version
64
69
  version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rubocop
65
72
  version_requirements: !ruby/object:Gem::Requirement
66
73
  requirements:
67
74
  - - ">="
68
75
  - !ruby/object:Gem::Version
69
76
  version: '0'
70
- - !ruby/object:Gem::Dependency
71
- name: rubocop
72
77
  type: :development
73
78
  prerelease: false
74
79
  requirement: !ruby/object:Gem::Requirement
@@ -76,13 +81,13 @@ dependencies:
76
81
  - - ">="
77
82
  - !ruby/object:Gem::Version
78
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: transpec
79
86
  version_requirements: !ruby/object:Gem::Requirement
80
87
  requirements:
81
88
  - - ">="
82
89
  - !ruby/object:Gem::Version
83
90
  version: '0'
84
- - !ruby/object:Gem::Dependency
85
- name: transpec
86
91
  type: :development
87
92
  prerelease: false
88
93
  requirement: !ruby/object:Gem::Requirement
@@ -90,13 +95,13 @@ dependencies:
90
95
  - - ">="
91
96
  - !ruby/object:Gem::Version
92
97
  version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: pry
93
100
  version_requirements: !ruby/object:Gem::Requirement
94
101
  requirements:
95
102
  - - ">="
96
103
  - !ruby/object:Gem::Version
97
104
  version: '0'
98
- - !ruby/object:Gem::Dependency
99
- name: pry
100
105
  type: :development
101
106
  prerelease: false
102
107
  requirement: !ruby/object:Gem::Requirement
@@ -104,13 +109,13 @@ dependencies:
104
109
  - - ">="
105
110
  - !ruby/object:Gem::Version
106
111
  version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rake
107
114
  version_requirements: !ruby/object:Gem::Requirement
108
115
  requirements:
109
116
  - - ">="
110
117
  - !ruby/object:Gem::Version
111
118
  version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: rake
114
119
  type: :development
115
120
  prerelease: false
116
121
  requirement: !ruby/object:Gem::Requirement
@@ -118,13 +123,13 @@ dependencies:
118
123
  - - ">="
119
124
  - !ruby/object:Gem::Version
120
125
  version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rspec
121
128
  version_requirements: !ruby/object:Gem::Requirement
122
129
  requirements:
123
130
  - - ">="
124
131
  - !ruby/object:Gem::Version
125
132
  version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: rspec
128
133
  type: :development
129
134
  prerelease: false
130
135
  requirement: !ruby/object:Gem::Requirement
@@ -132,13 +137,13 @@ dependencies:
132
137
  - - ">="
133
138
  - !ruby/object:Gem::Version
134
139
  version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: guard-rspec
135
142
  version_requirements: !ruby/object:Gem::Requirement
136
143
  requirements:
137
144
  - - ">="
138
145
  - !ruby/object:Gem::Version
139
146
  version: '0'
140
- - !ruby/object:Gem::Dependency
141
- name: guard-rspec
142
147
  type: :development
143
148
  prerelease: false
144
149
  requirement: !ruby/object:Gem::Requirement
@@ -146,13 +151,13 @@ dependencies:
146
151
  - - ">="
147
152
  - !ruby/object:Gem::Version
148
153
  version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: rspec-retry
149
156
  version_requirements: !ruby/object:Gem::Requirement
150
157
  requirements:
151
158
  - - ">="
152
159
  - !ruby/object:Gem::Version
153
160
  version: '0'
154
- - !ruby/object:Gem::Dependency
155
- name: coveralls
156
161
  type: :development
157
162
  prerelease: false
158
163
  requirement: !ruby/object:Gem::Requirement
@@ -160,41 +165,41 @@ dependencies:
160
165
  - - ">="
161
166
  - !ruby/object:Gem::Version
162
167
  version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: coveralls
163
170
  version_requirements: !ruby/object:Gem::Requirement
164
171
  requirements:
165
172
  - - ">="
166
173
  - !ruby/object:Gem::Version
167
174
  version: '0'
168
- - !ruby/object:Gem::Dependency
169
- name: celluloid
170
- type: :runtime
175
+ type: :development
171
176
  prerelease: false
172
177
  requirement: !ruby/object:Gem::Requirement
173
178
  requirements:
174
179
  - - ">="
175
180
  - !ruby/object:Gem::Version
176
- version: 0.17.1.1
181
+ version: '0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: celluloid
177
184
  version_requirements: !ruby/object:Gem::Requirement
178
185
  requirements:
179
186
  - - ">="
180
187
  - !ruby/object:Gem::Version
181
- version: 0.17.1.1
182
- - !ruby/object:Gem::Dependency
183
- name: celluloid-essentials
184
- type: :development
188
+ version: 0.17.2
189
+ type: :runtime
185
190
  prerelease: false
186
191
  requirement: !ruby/object:Gem::Requirement
187
192
  requirements:
188
193
  - - ">="
189
194
  - !ruby/object:Gem::Version
190
- version: '0'
195
+ version: 0.17.2
196
+ - !ruby/object:Gem::Dependency
197
+ name: celluloid-essentials
191
198
  version_requirements: !ruby/object:Gem::Requirement
192
199
  requirements:
193
200
  - - ">="
194
201
  - !ruby/object:Gem::Version
195
202
  version: '0'
196
- - !ruby/object:Gem::Dependency
197
- name: celluloid-supervision
198
203
  type: :development
199
204
  prerelease: false
200
205
  requirement: !ruby/object:Gem::Requirement
@@ -202,13 +207,13 @@ dependencies:
202
207
  - - ">="
203
208
  - !ruby/object:Gem::Version
204
209
  version: '0'
210
+ - !ruby/object:Gem::Dependency
211
+ name: celluloid-supervision
205
212
  version_requirements: !ruby/object:Gem::Requirement
206
213
  requirements:
207
214
  - - ">="
208
215
  - !ruby/object:Gem::Version
209
216
  version: '0'
210
- - !ruby/object:Gem::Dependency
211
- name: celluloid-pool
212
217
  type: :development
213
218
  prerelease: false
214
219
  requirement: !ruby/object:Gem::Requirement
@@ -216,13 +221,13 @@ dependencies:
216
221
  - - ">="
217
222
  - !ruby/object:Gem::Version
218
223
  version: '0'
224
+ - !ruby/object:Gem::Dependency
225
+ name: celluloid-pool
219
226
  version_requirements: !ruby/object:Gem::Requirement
220
227
  requirements:
221
228
  - - ">="
222
229
  - !ruby/object:Gem::Version
223
230
  version: '0'
224
- - !ruby/object:Gem::Dependency
225
- name: celluloid-fsm
226
231
  type: :development
227
232
  prerelease: false
228
233
  requirement: !ruby/object:Gem::Requirement
@@ -230,13 +235,13 @@ dependencies:
230
235
  - - ">="
231
236
  - !ruby/object:Gem::Version
232
237
  version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: celluloid-fsm
233
240
  version_requirements: !ruby/object:Gem::Requirement
234
241
  requirements:
235
242
  - - ">="
236
243
  - !ruby/object:Gem::Version
237
244
  version: '0'
238
- - !ruby/object:Gem::Dependency
239
- name: celluloid-extras
240
245
  type: :development
241
246
  prerelease: false
242
247
  requirement: !ruby/object:Gem::Requirement
@@ -244,41 +249,41 @@ dependencies:
244
249
  - - ">="
245
250
  - !ruby/object:Gem::Version
246
251
  version: '0'
252
+ - !ruby/object:Gem::Dependency
253
+ name: celluloid-extras
247
254
  version_requirements: !ruby/object:Gem::Requirement
248
255
  requirements:
249
256
  - - ">="
250
257
  - !ruby/object:Gem::Version
251
258
  version: '0'
252
- - !ruby/object:Gem::Dependency
253
- name: timers
254
- type: :runtime
259
+ type: :development
255
260
  prerelease: false
256
261
  requirement: !ruby/object:Gem::Requirement
257
262
  requirements:
258
263
  - - ">="
259
264
  - !ruby/object:Gem::Version
260
- version: 4.1.1
265
+ version: '0'
266
+ - !ruby/object:Gem::Dependency
267
+ name: timers
261
268
  version_requirements: !ruby/object:Gem::Requirement
262
269
  requirements:
263
270
  - - ">="
264
271
  - !ruby/object:Gem::Version
265
272
  version: 4.1.1
266
- - !ruby/object:Gem::Dependency
267
- name: rspec-logsplit
268
273
  type: :runtime
269
274
  prerelease: false
270
275
  requirement: !ruby/object:Gem::Requirement
271
276
  requirements:
272
277
  - - ">="
273
278
  - !ruby/object:Gem::Version
274
- version: 0.1.2
279
+ version: 4.1.1
280
+ - !ruby/object:Gem::Dependency
281
+ name: nio4r
275
282
  version_requirements: !ruby/object:Gem::Requirement
276
283
  requirements:
277
284
  - - ">="
278
285
  - !ruby/object:Gem::Version
279
- version: 0.1.2
280
- - !ruby/object:Gem::Dependency
281
- name: nio4r
286
+ version: '1.1'
282
287
  type: :runtime
283
288
  prerelease: false
284
289
  requirement: !ruby/object:Gem::Requirement
@@ -286,11 +291,6 @@ dependencies:
286
291
  - - ">="
287
292
  - !ruby/object:Gem::Version
288
293
  version: '1.1'
289
- version_requirements: !ruby/object:Gem::Requirement
290
- requirements:
291
- - - ">="
292
- - !ruby/object:Gem::Version
293
- version: '1.1'
294
294
  description: Evented IO for Celluloid actors
295
295
  email:
296
296
  - tony.arcieri@gmail.com
@@ -305,6 +305,7 @@ files:
305
305
  - ".gitignore"
306
306
  - ".gitmodules"
307
307
  - ".rspec"
308
+ - ".rubocop.yml"
308
309
  - ".travis.yml"
309
310
  - CHANGES.md
310
311
  - Gemfile
@@ -350,6 +351,8 @@ files:
350
351
  - spec/fixtures/server.crt
351
352
  - spec/fixtures/server.key
352
353
  - spec/spec_helper.rb
354
+ - spec/support/examples/classes.rb
355
+ - spec/support/examples/methods.rb
353
356
  - tasks/benchmarks.task
354
357
  - tasks/rspec.task
355
358
  homepage: http://github.com/celluloid/celluloid-io