serverside 0.2.5 → 0.2.6

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.
Files changed (51) hide show
  1. data/CHANGELOG +10 -0
  2. data/README +3 -3
  3. data/Rakefile +4 -4
  4. data/bin/serverside +4 -4
  5. data/doc/rdoc/classes/Daemon.html +4 -4
  6. data/doc/rdoc/classes/ServerSide.html +14 -74
  7. data/doc/rdoc/classes/ServerSide/Application.html +13 -13
  8. data/doc/rdoc/classes/ServerSide/{Connection.html → HTTP.html} +12 -18
  9. data/doc/rdoc/classes/ServerSide/HTTP/Connection.html +200 -0
  10. data/doc/rdoc/classes/ServerSide/{Connection → HTTP}/Const.html +6 -6
  11. data/doc/rdoc/classes/ServerSide/{Connection/Base.html → HTTP/Request.html} +213 -164
  12. data/doc/rdoc/classes/ServerSide/{Server.html → HTTP/Server.html} +22 -22
  13. data/doc/rdoc/classes/ServerSide/Router.html +496 -0
  14. data/doc/rdoc/classes/ServerSide/StaticFiles.html +31 -30
  15. data/doc/rdoc/classes/ServerSide/Template.html +12 -12
  16. data/doc/rdoc/created.rid +1 -1
  17. data/doc/rdoc/files/CHANGELOG.html +22 -4
  18. data/doc/rdoc/files/COPYING.html +1 -1
  19. data/doc/rdoc/files/README.html +4 -4
  20. data/doc/rdoc/files/lib/serverside/application_rb.html +1 -1
  21. data/doc/rdoc/files/lib/serverside/cluster_rb.html +1 -1
  22. data/doc/rdoc/files/lib/serverside/connection_rb.html +1 -1
  23. data/doc/rdoc/files/lib/serverside/core_ext_rb.html +1 -1
  24. data/doc/rdoc/files/lib/serverside/daemon_rb.html +1 -1
  25. data/doc/rdoc/files/lib/serverside/request_rb.html +101 -0
  26. data/doc/rdoc/files/lib/serverside/routing_rb.html +1 -1
  27. data/doc/rdoc/files/lib/serverside/server_rb.html +1 -1
  28. data/doc/rdoc/files/lib/serverside/static_rb.html +1 -1
  29. data/doc/rdoc/files/lib/serverside/template_rb.html +1 -1
  30. data/doc/rdoc/files/lib/serverside_rb.html +1 -1
  31. data/doc/rdoc/fr_class_index.html +6 -5
  32. data/doc/rdoc/fr_file_index.html +1 -0
  33. data/doc/rdoc/fr_method_index.html +31 -31
  34. data/lib/serverside/application.rb +1 -1
  35. data/lib/serverside/connection.rb +12 -141
  36. data/lib/serverside/request.rb +150 -0
  37. data/lib/serverside/routing.rb +117 -126
  38. data/lib/serverside/server.rb +13 -12
  39. data/lib/serverside/static.rb +1 -1
  40. data/test/functional/primitive_static_server_test.rb +3 -3
  41. data/test/functional/routing_server.rb +1 -1
  42. data/test/functional/routing_server_test.rb +1 -1
  43. data/test/functional/static_profile.rb +1 -1
  44. data/test/functional/static_server_test.rb +2 -2
  45. data/test/unit/connection_test.rb +30 -224
  46. data/test/unit/request_test.rb +248 -0
  47. data/test/unit/routing_test.rb +4 -4
  48. data/test/unit/server_test.rb +10 -8
  49. data/test/unit/static_test.rb +1 -1
  50. metadata +61 -56
  51. data/doc/rdoc/classes/ServerSide/Connection/Router.html +0 -493
@@ -0,0 +1,248 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'stringio'
3
+
4
+ class RequestTest < Test::Unit::TestCase
5
+ class DummyConnection
6
+ attr_reader :opened
7
+
8
+ def initialize
9
+ @opened = true
10
+ end
11
+
12
+ def close
13
+ @opened = false
14
+ end
15
+ end
16
+
17
+ class DummyRequest2 < ServerSide::HTTP::Request
18
+ attr_accessor :count
19
+
20
+ def parse
21
+ @count = 1
22
+ end
23
+
24
+ def respond
25
+ @count += 1
26
+ @persistent = @count < 2
27
+ end
28
+ end
29
+
30
+ def test_process
31
+ r = DummyRequest2.new(nil)
32
+ sleep 0.2
33
+ assert_equal false, r.process
34
+ assert_equal 2, r.count
35
+ assert_equal false, r.persistent
36
+ end
37
+
38
+ class DummyRequest3 < ServerSide::HTTP::Request
39
+ attr_accessor :parse_result, :respond_result
40
+ def parse; @parse_result; end
41
+ def respond; @respond_result; end
42
+ end
43
+
44
+ class ServerSide::HTTP::Request
45
+ attr_writer :conn, :persistent
46
+ end
47
+
48
+ def test_process_result
49
+ r = DummyRequest3.new(nil)
50
+ r.parse_result = nil
51
+ r.persistent = true
52
+ assert_equal nil, r.process
53
+ r.parse_result = nil
54
+ r.respond_result = true
55
+ assert_equal nil, r.process
56
+ r.parse_result = {}
57
+ r.respond_result = nil
58
+ r.persistent = false
59
+ assert_equal false, r.process
60
+ r.parse_result = {}
61
+ r.respond_result = true
62
+ r.persistent = true
63
+ assert_equal true, r.process
64
+ r.parse_result = {}
65
+ r.persistent = 'hello'
66
+ assert_equal 'hello', r.process
67
+ end
68
+
69
+ def test_parse_request_invalid
70
+ r = ServerSide::HTTP::Request.new(nil)
71
+ r.conn = StringIO.new('POST /test')
72
+ assert_nil r.parse
73
+ r.conn = StringIO.new('invalid string')
74
+ assert_nil r.parse
75
+ r.conn = StringIO.new('GET HTTP/1.1')
76
+ assert_nil r.parse
77
+ r.conn = StringIO.new('GET /test http')
78
+ assert_nil r.parse
79
+ r.conn = StringIO.new('GET /test HTTP')
80
+ assert_nil r.parse
81
+ r.conn = StringIO.new('GET /test HTTP/')
82
+ assert_nil r.parse
83
+ r.conn = StringIO.new('POST /test HTTP/1.1')
84
+ assert_nil r.parse
85
+ end
86
+
87
+ def test_parse_request
88
+ r = ServerSide::HTTP::Request.new(nil)
89
+ r.conn = StringIO.new("POST /test HTTP/1.1\r\n\r\n")
90
+ assert_kind_of Hash, r.parse
91
+ assert_equal :post, r.method
92
+ assert_equal '/test', r.path
93
+ assert_nil r.query
94
+ assert_equal '1.1', r.version
95
+ assert_equal({}, r.parameters)
96
+ assert_equal({}, r.headers)
97
+ assert_equal({}, r.cookies)
98
+ assert_nil r.response_cookies
99
+ assert_equal true, r.persistent
100
+
101
+ # trailing slash in path
102
+ r = ServerSide::HTTP::Request.new(nil)
103
+ r.conn = StringIO.new("POST /test/asdf/qw/?time=24%20hours HTTP/1.1\r\n\r\n")
104
+ assert_kind_of Hash, r.parse
105
+ assert_equal :post, r.method
106
+ assert_equal '/test/asdf/qw', r.path
107
+ assert_equal 'time=24%20hours', r.query
108
+ assert_equal '1.1', r.version
109
+ assert_equal({:time => '24 hours'}, r.parameters)
110
+ assert_equal({}, r.headers)
111
+ assert_equal({}, r.cookies)
112
+ assert_nil r.response_cookies
113
+ assert_equal true, r.persistent
114
+
115
+ r.conn = StringIO.new("GET /cex?q=node_state HTTP/1.1\r\n\r\n")
116
+ assert_kind_of Hash, r.parse
117
+ assert_equal :get, r.method
118
+ assert_equal '/cex', r.path
119
+ assert_equal 'q=node_state', r.query
120
+ assert_equal({:q => 'node_state'}, r.parameters)
121
+ assert_equal({}, r.cookies)
122
+ assert_nil r.response_cookies
123
+
124
+ r.conn = StringIO.new("GET / HTTP/1.0\r\n\r\n")
125
+ assert_kind_of Hash, r.parse
126
+ assert_equal false, r.persistent
127
+ assert_equal({}, r.cookies)
128
+ assert_nil r.response_cookies
129
+
130
+ r.conn = StringIO.new("GET / HTTP/invalid\r\n\r\n")
131
+ assert_kind_of Hash, r.parse
132
+ assert_equal 'invalid', r.version
133
+ assert_equal false, r.persistent
134
+
135
+ r.conn = StringIO.new("GET / HTTP/1.1\r\nConnection: close\r\n\r\n")
136
+ assert_kind_of Hash, r.parse
137
+ assert_equal '1.1', r.version
138
+ assert_equal 'close', r.headers['Connection']
139
+ assert_equal false, r.persistent
140
+
141
+ # cookies
142
+ r.conn = StringIO.new("GET / HTTP/1.1\r\nConnection: close\r\nCookie: abc=1342; def=7%2f4\r\n\r\n")
143
+ assert_kind_of Hash, r.parse
144
+ assert_equal 'abc=1342; def=7%2f4', r.headers['Cookie']
145
+ assert_equal '1342', r.cookies[:abc]
146
+ assert_equal '7/4', r.cookies[:def]
147
+ end
148
+
149
+ def test_send_response
150
+ r = ServerSide::HTTP::Request.new(nil)
151
+ # simple case
152
+ r.conn = StringIO.new
153
+ r.persistent = true
154
+ r.send_response(200, 'text', 'Hello there!')
155
+ r.conn.rewind
156
+ assert_equal "HTTP/1.1 200\r\nContent-Type: text\r\nContent-Length: 12\r\n\r\nHello there!",
157
+ r.conn.read
158
+
159
+ # include content-length
160
+ r.conn = StringIO.new
161
+ r.persistent = true
162
+ r.send_response(404, 'text/html', '<h1>404!</h1>', 10) # incorrect length
163
+ r.conn.rewind
164
+ assert_equal "HTTP/1.1 404\r\nContent-Type: text/html\r\nContent-Length: 10\r\n\r\n<h1>404!</h1>",
165
+ r.conn.read
166
+
167
+ # headers
168
+ r.conn = StringIO.new
169
+ r.persistent = true
170
+ r.send_response(404, 'text/html', '<h1>404!</h1>', nil, {'ETag' => 'xxyyzz'})
171
+ r.conn.rewind
172
+ assert_equal "HTTP/1.1 404\r\nContent-Type: text/html\r\nETag: xxyyzz\r\nContent-Length: 13\r\n\r\n<h1>404!</h1>",
173
+ r.conn.read
174
+
175
+ # no body
176
+ r.conn = StringIO.new
177
+ r.persistent = true
178
+ r.send_response(404, 'text/html', nil, nil, {'Set-Cookie' => 'abc=123'})
179
+ r.conn.rewind
180
+ assert_equal "HTTP/1.1 404\r\nConnection: close\r\nContent-Type: text/html\r\nSet-Cookie: abc=123\r\n\r\n",
181
+ r.conn.read
182
+ assert_equal false, r.persistent
183
+
184
+ # not persistent
185
+ r.conn = StringIO.new
186
+ r.persistent = false
187
+ r.send_response(200, 'text', 'Hello there!')
188
+ r.conn.rewind
189
+ assert_equal "HTTP/1.1 200\r\nConnection: close\r\nContent-Type: text\r\nContent-Length: 12\r\n\r\nHello there!",
190
+ r.conn.read
191
+
192
+ # socket error
193
+ r.conn = nil
194
+ r.persistent = true
195
+ assert_nothing_raised {r.send_response(200, 'text', 'Hello there!')}
196
+ assert_equal false, r.persistent
197
+ end
198
+
199
+ def test_stream
200
+ r = ServerSide::HTTP::Request.new(nil)
201
+ r.conn = StringIO.new
202
+ r.stream 'hey there'
203
+ r.conn.rewind
204
+ assert_equal 'hey there', r.conn.read
205
+
206
+ r.conn = StringIO.new
207
+ r.persistent = true
208
+ r.send_response(404, 'text/html', nil, nil, {'Set-Cookie' => 'abc=123'})
209
+ r.stream('hey there')
210
+ r.conn.rewind
211
+ assert_equal "HTTP/1.1 404\r\nConnection: close\r\nContent-Type: text/html\r\nSet-Cookie: abc=123\r\n\r\nhey there",
212
+ r.conn.read
213
+ end
214
+
215
+ def test_redirect
216
+ r = ServerSide::HTTP::Request.new(nil)
217
+ r.conn = StringIO.new
218
+ r.redirect('http://mau.com/132')
219
+ r.conn.rewind
220
+ assert_equal "HTTP/1.1 302\r\nConnection: close\r\nLocation: http://mau.com/132\r\n\r\n", r.conn.read
221
+
222
+ r.conn = StringIO.new
223
+ r.redirect('http://www.google.com/search?q=meaning%20of%20life', true)
224
+ r.conn.rewind
225
+ assert_equal "HTTP/1.1 301\r\nConnection: close\r\nLocation: http://www.google.com/search?q=meaning%20of%20life\r\n\r\n", r.conn.read
226
+ end
227
+
228
+ def test_set_cookie
229
+ r = ServerSide::HTTP::Request.new(nil)
230
+ r.conn = StringIO.new
231
+ t = Time.now + 360
232
+ r.set_cookie(:session, "ABCDEFG", t)
233
+ assert_equal "Set-Cookie: session=ABCDEFG; path=/; expires=#{t.rfc2822}\r\n", r.response_cookies
234
+ r.send_response(200, 'text', 'Hi!')
235
+ r.conn.rewind
236
+ assert_equal "HTTP/1.1 200\r\nConnection: close\r\nContent-Type: text\r\nSet-Cookie: session=ABCDEFG; path=/; expires=#{t.rfc2822}\r\nContent-Length: 3\r\n\r\nHi!", r.conn.read
237
+ end
238
+
239
+ def test_delete_cookie
240
+ r = ServerSide::HTTP::Request.new(nil)
241
+ r.conn = StringIO.new
242
+ r.delete_cookie(:session)
243
+ assert_equal "Set-Cookie: session=; path=/; expires=#{Time.at(0).rfc2822}\r\n", r.response_cookies
244
+ r.send_response(200, 'text', 'Hi!')
245
+ r.conn.rewind
246
+ assert_equal "HTTP/1.1 200\r\nConnection: close\r\nContent-Type: text\r\nSet-Cookie: session=; path=/; expires=#{Time.at(0).rfc2822}\r\nContent-Length: 3\r\n\r\nHi!", r.conn.read
247
+ end
248
+ end
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../test_helper'
2
2
  require 'stringio'
3
3
 
4
- class ServerSide::Connection::Router
4
+ class ServerSide::Router
5
5
  attr_accessor :t, :parameters
6
6
 
7
7
  def self.rules
@@ -22,7 +22,7 @@ class ServerSide::Connection::Router
22
22
  end
23
23
 
24
24
  class RoutingTest < Test::Unit::TestCase
25
- R = ServerSide::Connection::Router
25
+ R = ServerSide::Router
26
26
 
27
27
  def test_has_routes?
28
28
  R.remove_rules
@@ -158,14 +158,14 @@ class RoutingTest < Test::Unit::TestCase
158
158
 
159
159
  def test_serverside_route
160
160
  R.reset_rules
161
- ServerSide.route(:path => 'abc') {1 + 1}
161
+ ServerSide::Router.route(:path => 'abc') {1 + 1}
162
162
  assert_equal 1, R.rules.length
163
163
  assert_equal({:path => 'abc'}, R.rules[0][0])
164
164
  assert_equal 2, R.rules[0][1].call
165
165
  end
166
166
 
167
167
  def test_serverside_route_default
168
- ServerSide.route_default {1234}
168
+ ServerSide::Router.route_default {1234}
169
169
  assert_equal 1234, R.new(StringIO.new).default_handler
170
170
  end
171
171
  end
@@ -2,19 +2,21 @@ require File.dirname(__FILE__) + '/../test_helper'
2
2
  require 'net/http'
3
3
 
4
4
  class ServerTest < Test::Unit::TestCase
5
- class DummyConnection
6
- attr_reader :conn
7
- @@count = 0
8
- def initialize(conn)
9
- @@count += 1
10
- @conn = conn
5
+ class DummyRequest < ServerSide::HTTP::Request
6
+ def respond
11
7
  @conn << "HTTP/1.1 200\r\nContent-Length: 9\r\n\r\nHi there!"
12
- @conn.close
13
8
  end
14
9
  end
15
10
 
16
11
  def test_server_creation
17
- t = Thread.new {ServerSide::Server.new('0.0.0.0', 17543, DummyConnection)}
12
+ t = Thread.new do
13
+ begin
14
+ ServerSide::HTTP::Server.new('0.0.0.0', 17543, DummyRequest)
15
+ rescue => e
16
+ puts e.message
17
+ puts e.backtrace.first
18
+ end
19
+ end
18
20
  sleep 0.1
19
21
 
20
22
  h = Net::HTTP.new('localhost', 17543)
@@ -3,7 +3,7 @@ require 'stringio'
3
3
  require 'fileutils'
4
4
 
5
5
  class ConnectionTest < Test::Unit::TestCase
6
- class Dummy < ServerSide::Connection::Base
6
+ class Dummy < ServerSide::HTTP::Request
7
7
  def self.static_files
8
8
  @@static_files
9
9
  end
metadata CHANGED
@@ -1,10 +1,10 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.11
2
+ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: serverside
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.5
7
- date: 2006-09-03 00:00:00 +03:00
6
+ version: 0.2.6
7
+ date: 2006-09-30 00:00:00 +03:00
8
8
  summary: Performance-oriented web framework.
9
9
  require_paths:
10
10
  - lib
@@ -25,6 +25,7 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
25
25
  platform: ruby
26
26
  signing_key:
27
27
  cert_chain:
28
+ post_install_message:
28
29
  authors:
29
30
  - Sharon Rosner
30
31
  files:
@@ -33,82 +34,86 @@ files:
33
34
  - Rakefile
34
35
  - bin/serverside
35
36
  - doc/rdoc
37
+ - doc/rdoc/classes
36
38
  - doc/rdoc/created.rid
37
- - doc/rdoc/rdoc-style.css
38
39
  - doc/rdoc/files
39
- - doc/rdoc/classes
40
- - doc/rdoc/fr_file_index.html
41
40
  - doc/rdoc/fr_class_index.html
41
+ - doc/rdoc/fr_file_index.html
42
42
  - doc/rdoc/fr_method_index.html
43
43
  - doc/rdoc/index.html
44
- - doc/rdoc/files/README.html
45
- - doc/rdoc/files/CHANGELOG.html
46
- - doc/rdoc/files/COPYING.html
47
- - doc/rdoc/files/lib
48
- - doc/rdoc/files/lib/serverside_rb.html
49
- - doc/rdoc/files/lib/serverside
50
- - doc/rdoc/files/lib/serverside/server_rb.html
51
- - doc/rdoc/files/lib/serverside/daemon_rb.html
52
- - doc/rdoc/files/lib/serverside/application_rb.html
53
- - doc/rdoc/files/lib/serverside/core_ext_rb.html
54
- - doc/rdoc/files/lib/serverside/connection_rb.html
55
- - doc/rdoc/files/lib/serverside/cluster_rb.html
56
- - doc/rdoc/files/lib/serverside/static_rb.html
57
- - doc/rdoc/files/lib/serverside/routing_rb.html
58
- - doc/rdoc/files/lib/serverside/template_rb.html
59
- - doc/rdoc/classes/Symbol.html
60
- - doc/rdoc/classes/Proc.html
61
- - doc/rdoc/classes/Object.html
62
- - doc/rdoc/classes/String.html
63
- - doc/rdoc/classes/Daemon.html
44
+ - doc/rdoc/rdoc-style.css
64
45
  - doc/rdoc/classes/Daemon
65
- - doc/rdoc/classes/ServerSide.html
46
+ - doc/rdoc/classes/Daemon.html
47
+ - doc/rdoc/classes/Object.html
48
+ - doc/rdoc/classes/Proc.html
66
49
  - doc/rdoc/classes/ServerSide
67
- - doc/rdoc/classes/Daemon/PidFile.html
50
+ - doc/rdoc/classes/ServerSide.html
51
+ - doc/rdoc/classes/String.html
52
+ - doc/rdoc/classes/Symbol.html
68
53
  - doc/rdoc/classes/Daemon/Base.html
69
- - doc/rdoc/classes/Daemon/Cluster.html
70
54
  - doc/rdoc/classes/Daemon/Cluster
55
+ - doc/rdoc/classes/Daemon/Cluster.html
56
+ - doc/rdoc/classes/Daemon/PidFile.html
71
57
  - doc/rdoc/classes/Daemon/Cluster/PidFile.html
72
- - doc/rdoc/classes/ServerSide/StaticFiles.html
73
- - doc/rdoc/classes/ServerSide/StaticFiles
74
58
  - doc/rdoc/classes/ServerSide/Application.html
75
- - doc/rdoc/classes/ServerSide/Connection.html
76
- - doc/rdoc/classes/ServerSide/Connection
77
- - doc/rdoc/classes/ServerSide/Server.html
59
+ - doc/rdoc/classes/ServerSide/HTTP
60
+ - doc/rdoc/classes/ServerSide/HTTP.html
61
+ - doc/rdoc/classes/ServerSide/Router.html
62
+ - doc/rdoc/classes/ServerSide/StaticFiles
63
+ - doc/rdoc/classes/ServerSide/StaticFiles.html
78
64
  - doc/rdoc/classes/ServerSide/Template.html
65
+ - doc/rdoc/classes/ServerSide/HTTP/Connection.html
66
+ - doc/rdoc/classes/ServerSide/HTTP/Const.html
67
+ - doc/rdoc/classes/ServerSide/HTTP/Request.html
68
+ - doc/rdoc/classes/ServerSide/HTTP/Server.html
79
69
  - doc/rdoc/classes/ServerSide/StaticFiles/Const.html
80
- - doc/rdoc/classes/ServerSide/Connection/Const.html
81
- - doc/rdoc/classes/ServerSide/Connection/Base.html
82
- - doc/rdoc/classes/ServerSide/Connection/Router.html
83
- - test/unit
84
- - test/test_helper.rb
70
+ - doc/rdoc/files/CHANGELOG.html
71
+ - doc/rdoc/files/COPYING.html
72
+ - doc/rdoc/files/lib
73
+ - doc/rdoc/files/README.html
74
+ - doc/rdoc/files/lib/serverside
75
+ - doc/rdoc/files/lib/serverside_rb.html
76
+ - doc/rdoc/files/lib/serverside/application_rb.html
77
+ - doc/rdoc/files/lib/serverside/cluster_rb.html
78
+ - doc/rdoc/files/lib/serverside/connection_rb.html
79
+ - doc/rdoc/files/lib/serverside/core_ext_rb.html
80
+ - doc/rdoc/files/lib/serverside/daemon_rb.html
81
+ - doc/rdoc/files/lib/serverside/request_rb.html
82
+ - doc/rdoc/files/lib/serverside/routing_rb.html
83
+ - doc/rdoc/files/lib/serverside/server_rb.html
84
+ - doc/rdoc/files/lib/serverside/static_rb.html
85
+ - doc/rdoc/files/lib/serverside/template_rb.html
85
86
  - test/functional
86
87
  - test/spec
87
- - test/unit/daemon_test.rb
88
- - test/unit/server_test.rb
89
- - test/unit/core_ext_test.rb
90
- - test/unit/connection_test.rb
91
- - test/unit/cluster_test.rb
92
- - test/unit/static_test.rb
93
- - test/unit/routing_test.rb
94
- - test/unit/template_test.rb
88
+ - test/test_helper.rb
89
+ - test/unit
95
90
  - test/functional/primitive_static_server_test.rb
96
- - test/functional/static_server_test.rb
97
- - test/functional/static_profile.rb
98
- - test/functional/static_rfuzz.rb
99
91
  - test/functional/routing_server.rb
100
92
  - test/functional/routing_server_test.rb
93
+ - test/functional/static_profile.rb
94
+ - test/functional/static_rfuzz.rb
95
+ - test/functional/static_server_test.rb
101
96
  - test/spec/core_ext_spec.rb
102
- - lib/serverside.rb
97
+ - test/unit/cluster_test.rb
98
+ - test/unit/connection_test.rb
99
+ - test/unit/core_ext_test.rb
100
+ - test/unit/daemon_test.rb
101
+ - test/unit/request_test.rb
102
+ - test/unit/routing_test.rb
103
+ - test/unit/server_test.rb
104
+ - test/unit/static_test.rb
105
+ - test/unit/template_test.rb
103
106
  - lib/serverside
104
- - lib/serverside/server.rb
105
- - lib/serverside/daemon.rb
107
+ - lib/serverside.rb
106
108
  - lib/serverside/application.rb
107
- - lib/serverside/core_ext.rb
108
- - lib/serverside/connection.rb
109
109
  - lib/serverside/cluster.rb
110
- - lib/serverside/static.rb
110
+ - lib/serverside/connection.rb
111
+ - lib/serverside/core_ext.rb
112
+ - lib/serverside/daemon.rb
113
+ - lib/serverside/request.rb
111
114
  - lib/serverside/routing.rb
115
+ - lib/serverside/server.rb
116
+ - lib/serverside/static.rb
112
117
  - lib/serverside/template.rb
113
118
  - CHANGELOG
114
119
  test_files: []