rack 1.6.12 → 2.0.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rack might be problematic. Click here for more details.

Files changed (142) hide show
  1. checksums.yaml +5 -5
  2. data/COPYING +1 -1
  3. data/HISTORY.md +138 -8
  4. data/README.rdoc +17 -25
  5. data/Rakefile +6 -14
  6. data/SPEC +10 -11
  7. data/contrib/rack_logo.svg +164 -111
  8. data/example/protectedlobster.rb +1 -1
  9. data/example/protectedlobster.ru +1 -1
  10. data/lib/rack.rb +70 -21
  11. data/lib/rack/auth/abstract/request.rb +5 -1
  12. data/lib/rack/auth/digest/params.rb +2 -3
  13. data/lib/rack/auth/digest/request.rb +1 -1
  14. data/lib/rack/body_proxy.rb +14 -9
  15. data/lib/rack/builder.rb +3 -3
  16. data/lib/rack/chunked.rb +5 -5
  17. data/lib/rack/{commonlogger.rb → common_logger.rb} +3 -3
  18. data/lib/rack/{conditionalget.rb → conditional_get.rb} +0 -0
  19. data/lib/rack/content_length.rb +2 -2
  20. data/lib/rack/deflater.rb +4 -39
  21. data/lib/rack/directory.rb +66 -54
  22. data/lib/rack/etag.rb +4 -3
  23. data/lib/rack/events.rb +154 -0
  24. data/lib/rack/file.rb +64 -40
  25. data/lib/rack/handler.rb +3 -25
  26. data/lib/rack/handler/cgi.rb +15 -16
  27. data/lib/rack/handler/fastcgi.rb +13 -14
  28. data/lib/rack/handler/lsws.rb +11 -11
  29. data/lib/rack/handler/scgi.rb +15 -15
  30. data/lib/rack/handler/thin.rb +3 -0
  31. data/lib/rack/handler/webrick.rb +24 -26
  32. data/lib/rack/head.rb +15 -17
  33. data/lib/rack/lint.rb +40 -40
  34. data/lib/rack/lobster.rb +1 -1
  35. data/lib/rack/lock.rb +6 -10
  36. data/lib/rack/logger.rb +2 -2
  37. data/lib/rack/media_type.rb +38 -0
  38. data/lib/rack/{methodoverride.rb → method_override.rb} +6 -10
  39. data/lib/rack/mime.rb +18 -5
  40. data/lib/rack/mock.rb +36 -54
  41. data/lib/rack/multipart.rb +35 -6
  42. data/lib/rack/multipart/generator.rb +5 -5
  43. data/lib/rack/multipart/parser.rb +272 -158
  44. data/lib/rack/multipart/uploaded_file.rb +1 -2
  45. data/lib/rack/{nulllogger.rb → null_logger.rb} +1 -1
  46. data/lib/rack/query_parser.rb +192 -0
  47. data/lib/rack/recursive.rb +8 -8
  48. data/lib/rack/request.rb +383 -307
  49. data/lib/rack/response.rb +130 -57
  50. data/lib/rack/rewindable_input.rb +1 -12
  51. data/lib/rack/runtime.rb +10 -18
  52. data/lib/rack/sendfile.rb +5 -7
  53. data/lib/rack/server.rb +30 -23
  54. data/lib/rack/session/abstract/id.rb +108 -138
  55. data/lib/rack/session/cookie.rb +26 -28
  56. data/lib/rack/session/memcache.rb +8 -14
  57. data/lib/rack/session/pool.rb +14 -21
  58. data/lib/rack/show_exceptions.rb +386 -0
  59. data/lib/rack/{showstatus.rb → show_status.rb} +3 -3
  60. data/lib/rack/static.rb +30 -5
  61. data/lib/rack/tempfile_reaper.rb +2 -2
  62. data/lib/rack/urlmap.rb +15 -14
  63. data/lib/rack/utils.rb +136 -211
  64. data/rack.gemspec +7 -5
  65. data/test/builder/an_underscore_app.rb +5 -0
  66. data/test/builder/options.ru +1 -1
  67. data/test/cgi/test.fcgi +1 -0
  68. data/test/cgi/test.gz +0 -0
  69. data/test/helper.rb +34 -0
  70. data/test/multipart/filename_with_encoded_words +7 -0
  71. data/test/multipart/filename_with_single_quote +7 -0
  72. data/test/multipart/quoted +15 -0
  73. data/test/multipart/rack-logo.png +0 -0
  74. data/test/multipart/unity3d_wwwform +11 -0
  75. data/test/registering_handler/rack/handler/registering_myself.rb +1 -1
  76. data/test/spec_auth_basic.rb +27 -19
  77. data/test/spec_auth_digest.rb +47 -46
  78. data/test/spec_body_proxy.rb +27 -27
  79. data/test/spec_builder.rb +51 -41
  80. data/test/spec_cascade.rb +24 -22
  81. data/test/spec_cgi.rb +49 -67
  82. data/test/spec_chunked.rb +37 -35
  83. data/test/{spec_commonlogger.rb → spec_common_logger.rb} +23 -21
  84. data/test/{spec_conditionalget.rb → spec_conditional_get.rb} +29 -28
  85. data/test/spec_config.rb +3 -2
  86. data/test/spec_content_length.rb +18 -17
  87. data/test/spec_content_type.rb +13 -12
  88. data/test/spec_deflater.rb +85 -49
  89. data/test/spec_directory.rb +87 -27
  90. data/test/spec_etag.rb +32 -31
  91. data/test/spec_events.rb +133 -0
  92. data/test/spec_fastcgi.rb +50 -72
  93. data/test/spec_file.rb +120 -77
  94. data/test/spec_handler.rb +19 -34
  95. data/test/spec_head.rb +15 -14
  96. data/test/spec_lint.rb +164 -199
  97. data/test/spec_lobster.rb +24 -23
  98. data/test/spec_lock.rb +69 -39
  99. data/test/spec_logger.rb +4 -3
  100. data/test/spec_media_type.rb +42 -0
  101. data/test/{spec_methodoverride.rb → spec_method_override.rb} +22 -37
  102. data/test/spec_mime.rb +19 -19
  103. data/test/spec_mock.rb +206 -144
  104. data/test/spec_multipart.rb +322 -200
  105. data/test/{spec_nulllogger.rb → spec_null_logger.rb} +5 -4
  106. data/test/spec_recursive.rb +17 -14
  107. data/test/spec_request.rb +768 -607
  108. data/test/spec_response.rb +215 -112
  109. data/test/spec_rewindable_input.rb +50 -40
  110. data/test/spec_runtime.rb +11 -10
  111. data/test/spec_sendfile.rb +30 -35
  112. data/test/spec_server.rb +78 -52
  113. data/test/spec_session_abstract_id.rb +11 -33
  114. data/test/spec_session_abstract_session_hash.rb +45 -0
  115. data/test/spec_session_cookie.rb +99 -67
  116. data/test/spec_session_memcache.rb +63 -101
  117. data/test/spec_session_pool.rb +48 -84
  118. data/test/spec_show_exceptions.rb +80 -0
  119. data/test/{spec_showstatus.rb → spec_show_status.rb} +36 -35
  120. data/test/spec_static.rb +71 -32
  121. data/test/spec_tempfile_reaper.rb +11 -10
  122. data/test/spec_thin.rb +55 -50
  123. data/test/spec_urlmap.rb +79 -78
  124. data/test/spec_utils.rb +441 -346
  125. data/test/spec_version.rb +2 -8
  126. data/test/spec_webrick.rb +93 -68
  127. data/test/static/foo.html +1 -0
  128. data/test/testrequest.rb +1 -1
  129. data/test/unregistered_handler/rack/handler/unregistered.rb +1 -1
  130. data/test/unregistered_handler/rack/handler/unregistered_long_one.rb +1 -1
  131. metadata +102 -66
  132. data/KNOWN-ISSUES +0 -44
  133. data/lib/rack/backports/uri/common_18.rb +0 -56
  134. data/lib/rack/backports/uri/common_192.rb +0 -52
  135. data/lib/rack/backports/uri/common_193.rb +0 -29
  136. data/lib/rack/handler/evented_mongrel.rb +0 -8
  137. data/lib/rack/handler/mongrel.rb +0 -106
  138. data/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
  139. data/lib/rack/showexceptions.rb +0 -387
  140. data/lib/rack/utils/okjson.rb +0 -600
  141. data/test/spec_mongrel.rb +0 -182
  142. data/test/spec_showexceptions.rb +0 -98
@@ -1,17 +1,11 @@
1
1
  # -*- encoding: utf-8 -*-
2
+ require 'minitest/autorun'
2
3
  require 'rack'
3
4
 
4
5
  describe Rack do
5
6
  describe 'version' do
6
7
  it 'defaults to a hard-coded api version' do
7
- Rack.version.should.equal("1.3")
8
- end
9
- end
10
- describe 'release' do
11
- it 'matches version in .gemspec' do
12
- gemspec_path = File.join(File.dirname(File.expand_path(__FILE__)), '../rack.gemspec')
13
- gemspec = Gem::Specification.load(gemspec_path)
14
- Rack.release.split('.').take(2).should.equal gemspec.version.to_s.split('.').take(2)
8
+ Rack.version.must_equal "1.3"
15
9
  end
16
10
  end
17
11
  end
@@ -1,92 +1,109 @@
1
+ require 'minitest/autorun'
1
2
  require 'rack/mock'
3
+ require 'concurrent/utility/native_integer'
4
+ require 'concurrent/atomic/count_down_latch'
2
5
  require File.expand_path('../testrequest', __FILE__)
3
6
 
4
7
  Thread.abort_on_exception = true
5
8
 
6
9
  describe Rack::Handler::WEBrick do
7
- extend TestRequest::Helpers
10
+ include TestRequest::Helpers
8
11
 
12
+ before do
9
13
  @server = WEBrick::HTTPServer.new(:Host => @host='127.0.0.1',
10
14
  :Port => @port=9202,
11
15
  :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
12
16
  :AccessLog => [])
13
17
  @server.mount "/test", Rack::Handler::WEBrick,
14
18
  Rack::Lint.new(TestRequest.new)
15
- Thread.new { @server.start }
19
+ @thread = Thread.new { @server.start }
16
20
  trap(:INT) { @server.shutdown }
21
+ @status_thread = Thread.new do
22
+ seconds = 10
23
+ wait_time = 0.1
24
+ until is_running? || seconds <= 0
25
+ seconds -= wait_time
26
+ sleep wait_time
27
+ end
28
+ raise "Server never reached status 'Running'" unless is_running?
29
+ end
30
+ end
17
31
 
18
- should "respond" do
19
- lambda {
20
- GET("/test")
21
- }.should.not.raise
32
+ def is_running?
33
+ @server.status == :Running
34
+ end
35
+
36
+ it "respond" do
37
+ GET("/test")
38
+ status.must_equal 200
22
39
  end
23
40
 
24
- should "be a WEBrick" do
41
+ it "be a WEBrick" do
25
42
  GET("/test")
26
- status.should.equal 200
27
- response["SERVER_SOFTWARE"].should =~ /WEBrick/
28
- response["HTTP_VERSION"].should.equal "HTTP/1.1"
29
- response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
30
- response["SERVER_PORT"].should.equal "9202"
31
- response["SERVER_NAME"].should.equal "127.0.0.1"
43
+ status.must_equal 200
44
+ response["SERVER_SOFTWARE"].must_match(/WEBrick/)
45
+ response["HTTP_VERSION"].must_equal "HTTP/1.1"
46
+ response["SERVER_PROTOCOL"].must_equal "HTTP/1.1"
47
+ response["SERVER_PORT"].must_equal "9202"
48
+ response["SERVER_NAME"].must_equal "127.0.0.1"
32
49
  end
33
50
 
34
- should "have rack headers" do
51
+ it "have rack headers" do
35
52
  GET("/test")
36
- response["rack.version"].should.equal [1,3]
37
- response["rack.multithread"].should.be.true
38
- response["rack.multiprocess"].should.be.false
39
- response["rack.run_once"].should.be.false
53
+ response["rack.version"].must_equal [1,3]
54
+ response["rack.multithread"].must_equal true
55
+ assert_equal false, response["rack.multiprocess"]
56
+ assert_equal false, response["rack.run_once"]
40
57
  end
41
58
 
42
- should "have CGI headers on GET" do
59
+ it "have CGI headers on GET" do
43
60
  GET("/test")
44
- response["REQUEST_METHOD"].should.equal "GET"
45
- response["SCRIPT_NAME"].should.equal "/test"
46
- response["REQUEST_PATH"].should.equal "/test"
47
- response["PATH_INFO"].should.be.equal ""
48
- response["QUERY_STRING"].should.equal ""
49
- response["test.postdata"].should.equal ""
61
+ response["REQUEST_METHOD"].must_equal "GET"
62
+ response["SCRIPT_NAME"].must_equal "/test"
63
+ response["REQUEST_PATH"].must_equal "/test"
64
+ response["PATH_INFO"].must_equal ""
65
+ response["QUERY_STRING"].must_equal ""
66
+ response["test.postdata"].must_equal ""
50
67
 
51
68
  GET("/test/foo?quux=1")
52
- response["REQUEST_METHOD"].should.equal "GET"
53
- response["SCRIPT_NAME"].should.equal "/test"
54
- response["REQUEST_PATH"].should.equal "/test/foo"
55
- response["PATH_INFO"].should.equal "/foo"
56
- response["QUERY_STRING"].should.equal "quux=1"
69
+ response["REQUEST_METHOD"].must_equal "GET"
70
+ response["SCRIPT_NAME"].must_equal "/test"
71
+ response["REQUEST_PATH"].must_equal "/test/foo"
72
+ response["PATH_INFO"].must_equal "/foo"
73
+ response["QUERY_STRING"].must_equal "quux=1"
57
74
 
58
75
  GET("/test/foo%25encoding?quux=1")
59
- response["REQUEST_METHOD"].should.equal "GET"
60
- response["SCRIPT_NAME"].should.equal "/test"
61
- response["REQUEST_PATH"].should.equal "/test/foo%25encoding"
62
- response["PATH_INFO"].should.equal "/foo%25encoding"
63
- response["QUERY_STRING"].should.equal "quux=1"
76
+ response["REQUEST_METHOD"].must_equal "GET"
77
+ response["SCRIPT_NAME"].must_equal "/test"
78
+ response["REQUEST_PATH"].must_equal "/test/foo%25encoding"
79
+ response["PATH_INFO"].must_equal "/foo%25encoding"
80
+ response["QUERY_STRING"].must_equal "quux=1"
64
81
  end
65
82
 
66
- should "have CGI headers on POST" do
83
+ it "have CGI headers on POST" do
67
84
  POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
68
- status.should.equal 200
69
- response["REQUEST_METHOD"].should.equal "POST"
70
- response["SCRIPT_NAME"].should.equal "/test"
71
- response["REQUEST_PATH"].should.equal "/test"
72
- response["PATH_INFO"].should.equal ""
73
- response["QUERY_STRING"].should.equal ""
74
- response["HTTP_X_TEST_HEADER"].should.equal "42"
75
- response["test.postdata"].should.equal "rack-form-data=23"
85
+ status.must_equal 200
86
+ response["REQUEST_METHOD"].must_equal "POST"
87
+ response["SCRIPT_NAME"].must_equal "/test"
88
+ response["REQUEST_PATH"].must_equal "/test"
89
+ response["PATH_INFO"].must_equal ""
90
+ response["QUERY_STRING"].must_equal ""
91
+ response["HTTP_X_TEST_HEADER"].must_equal "42"
92
+ response["test.postdata"].must_equal "rack-form-data=23"
76
93
  end
77
94
 
78
- should "support HTTP auth" do
95
+ it "support HTTP auth" do
79
96
  GET("/test", {:user => "ruth", :passwd => "secret"})
80
- response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
97
+ response["HTTP_AUTHORIZATION"].must_equal "Basic cnV0aDpzZWNyZXQ="
81
98
  end
82
99
 
83
- should "set status" do
100
+ it "set status" do
84
101
  GET("/test?secret")
85
- status.should.equal 403
86
- response["rack.url_scheme"].should.equal "http"
102
+ status.must_equal 403
103
+ response["rack.url_scheme"].must_equal "http"
87
104
  end
88
105
 
89
- should "correctly set cookies" do
106
+ it "correctly set cookies" do
90
107
  @server.mount "/cookie-test", Rack::Handler::WEBrick,
91
108
  Rack::Lint.new(lambda { |req|
92
109
  res = Rack::Response.new
@@ -97,14 +114,16 @@ describe Rack::Handler::WEBrick do
97
114
 
98
115
  Net::HTTP.start(@host, @port) { |http|
99
116
  res = http.get("/cookie-test")
100
- res.code.to_i.should.equal 200
101
- res.get_fields("set-cookie").should.equal ["one=1", "two=2"]
117
+ res.code.to_i.must_equal 200
118
+ res.get_fields("set-cookie").must_equal ["one=1", "two=2"]
102
119
  }
103
120
  end
104
121
 
105
- should "provide a .run" do
122
+ it "provide a .run" do
106
123
  block_ran = false
107
- catch(:done) {
124
+ latch = Concurrent::CountDownLatch.new 1
125
+
126
+ t = Thread.new do
108
127
  Rack::Handler::WEBrick.run(lambda {},
109
128
  {
110
129
  :Host => '127.0.0.1',
@@ -112,16 +131,18 @@ describe Rack::Handler::WEBrick do
112
131
  :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN),
113
132
  :AccessLog => []}) { |server|
114
133
  block_ran = true
115
- server.should.be.kind_of WEBrick::HTTPServer
134
+ assert_kind_of WEBrick::HTTPServer, server
116
135
  @s = server
117
- throw :done
136
+ latch.count_down
118
137
  }
119
- }
120
- block_ran.should.be.true
138
+ end
139
+
140
+ latch.wait
121
141
  @s.shutdown
142
+ t.join
122
143
  end
123
144
 
124
- should "return repeated headers" do
145
+ it "return repeated headers" do
125
146
  @server.mount "/headers", Rack::Handler::WEBrick,
126
147
  Rack::Lint.new(lambda { |req|
127
148
  [
@@ -134,12 +155,12 @@ describe Rack::Handler::WEBrick do
134
155
 
135
156
  Net::HTTP.start(@host, @port) { |http|
136
157
  res = http.get("/headers")
137
- res.code.to_i.should.equal 401
138
- res["www-authenticate"].should.equal "Bar realm=X, Baz realm=Y"
158
+ res.code.to_i.must_equal 401
159
+ res["www-authenticate"].must_equal "Bar realm=X, Baz realm=Y"
139
160
  }
140
161
  end
141
162
 
142
- should "support Rack partial hijack" do
163
+ it "support Rack partial hijack" do
143
164
  io_lambda = lambda{ |io|
144
165
  5.times do
145
166
  io.write "David\r\n"
@@ -151,18 +172,18 @@ describe Rack::Handler::WEBrick do
151
172
  Rack::Lint.new(lambda{ |req|
152
173
  [
153
174
  200,
154
- {"rack.hijack" => io_lambda},
175
+ [ [ "rack.hijack", io_lambda ] ],
155
176
  [""]
156
177
  ]
157
178
  })
158
179
 
159
180
  Net::HTTP.start(@host, @port){ |http|
160
181
  res = http.get("/partial")
161
- res.body.should.equal "David\r\nDavid\r\nDavid\r\nDavid\r\nDavid\r\n"
182
+ res.body.must_equal "David\r\nDavid\r\nDavid\r\nDavid\r\nDavid\r\n"
162
183
  }
163
184
  end
164
185
 
165
- should "produce correct HTTP semantics with and without app chunking" do
186
+ it "produce correct HTTP semantics with and without app chunking" do
166
187
  @server.mount "/chunked", Rack::Handler::WEBrick,
167
188
  Rack::Lint.new(lambda{ |req|
168
189
  [
@@ -174,11 +195,15 @@ describe Rack::Handler::WEBrick do
174
195
 
175
196
  Net::HTTP.start(@host, @port){ |http|
176
197
  res = http.get("/chunked")
177
- res["Transfer-Encoding"].should.equal "chunked"
178
- res["Content-Length"].should.equal nil
179
- res.body.should.equal "chunked"
198
+ res["Transfer-Encoding"].must_equal "chunked"
199
+ res["Content-Length"].must_be_nil
200
+ res.body.must_equal "chunked"
180
201
  }
181
202
  end
182
203
 
204
+ after do
205
+ @status_thread.join
183
206
  @server.shutdown
207
+ @thread.join
208
+ end
184
209
  end
@@ -0,0 +1 @@
1
+ foo.html!
@@ -12,7 +12,7 @@ class TestRequest
12
12
  # This may in the future want to replace with a dummy value instead.
13
13
  minienv.delete_if { |k,v| NOSERIALIZE.any? { |c| v.kind_of?(c) } }
14
14
  body = minienv.to_yaml
15
- size = body.respond_to?(:bytesize) ? body.bytesize : body.size
15
+ size = body.bytesize
16
16
  [status, {"Content-Type" => "text/yaml", "Content-Length" => size.to_s}, [body]]
17
17
  end
18
18
 
@@ -4,4 +4,4 @@ module Rack
4
4
  class Unregistered
5
5
  end
6
6
  end
7
- end
7
+ end
@@ -4,4 +4,4 @@ module Rack
4
4
  class UnregisteredLongOne
5
5
  end
6
6
  end
7
- end
7
+ end
metadata CHANGED
@@ -1,17 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.12
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian Neukirchen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-18 00:00:00.000000000 Z
11
+ date: 2017-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bacon
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest-sprint
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: concurrent-ruby
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
45
  - - ">="
@@ -52,12 +80,10 @@ executables:
52
80
  extensions: []
53
81
  extra_rdoc_files:
54
82
  - README.rdoc
55
- - KNOWN-ISSUES
56
83
  - HISTORY.md
57
84
  files:
58
85
  - COPYING
59
86
  - HISTORY.md
60
- - KNOWN-ISSUES
61
87
  - README.rdoc
62
88
  - Rakefile
63
89
  - SPEC
@@ -77,30 +103,25 @@ files:
77
103
  - lib/rack/auth/digest/nonce.rb
78
104
  - lib/rack/auth/digest/params.rb
79
105
  - lib/rack/auth/digest/request.rb
80
- - lib/rack/backports/uri/common_18.rb
81
- - lib/rack/backports/uri/common_192.rb
82
- - lib/rack/backports/uri/common_193.rb
83
106
  - lib/rack/body_proxy.rb
84
107
  - lib/rack/builder.rb
85
108
  - lib/rack/cascade.rb
86
109
  - lib/rack/chunked.rb
87
- - lib/rack/commonlogger.rb
88
- - lib/rack/conditionalget.rb
110
+ - lib/rack/common_logger.rb
111
+ - lib/rack/conditional_get.rb
89
112
  - lib/rack/config.rb
90
113
  - lib/rack/content_length.rb
91
114
  - lib/rack/content_type.rb
92
115
  - lib/rack/deflater.rb
93
116
  - lib/rack/directory.rb
94
117
  - lib/rack/etag.rb
118
+ - lib/rack/events.rb
95
119
  - lib/rack/file.rb
96
120
  - lib/rack/handler.rb
97
121
  - lib/rack/handler/cgi.rb
98
- - lib/rack/handler/evented_mongrel.rb
99
122
  - lib/rack/handler/fastcgi.rb
100
123
  - lib/rack/handler/lsws.rb
101
- - lib/rack/handler/mongrel.rb
102
124
  - lib/rack/handler/scgi.rb
103
- - lib/rack/handler/swiftiplied_mongrel.rb
104
125
  - lib/rack/handler/thin.rb
105
126
  - lib/rack/handler/webrick.rb
106
127
  - lib/rack/head.rb
@@ -108,14 +129,16 @@ files:
108
129
  - lib/rack/lobster.rb
109
130
  - lib/rack/lock.rb
110
131
  - lib/rack/logger.rb
111
- - lib/rack/methodoverride.rb
132
+ - lib/rack/media_type.rb
133
+ - lib/rack/method_override.rb
112
134
  - lib/rack/mime.rb
113
135
  - lib/rack/mock.rb
114
136
  - lib/rack/multipart.rb
115
137
  - lib/rack/multipart/generator.rb
116
138
  - lib/rack/multipart/parser.rb
117
139
  - lib/rack/multipart/uploaded_file.rb
118
- - lib/rack/nulllogger.rb
140
+ - lib/rack/null_logger.rb
141
+ - lib/rack/query_parser.rb
119
142
  - lib/rack/recursive.rb
120
143
  - lib/rack/reloader.rb
121
144
  - lib/rack/request.rb
@@ -128,14 +151,14 @@ files:
128
151
  - lib/rack/session/cookie.rb
129
152
  - lib/rack/session/memcache.rb
130
153
  - lib/rack/session/pool.rb
131
- - lib/rack/showexceptions.rb
132
- - lib/rack/showstatus.rb
154
+ - lib/rack/show_exceptions.rb
155
+ - lib/rack/show_status.rb
133
156
  - lib/rack/static.rb
134
157
  - lib/rack/tempfile_reaper.rb
135
158
  - lib/rack/urlmap.rb
136
159
  - lib/rack/utils.rb
137
- - lib/rack/utils/okjson.rb
138
160
  - rack.gemspec
161
+ - test/builder/an_underscore_app.rb
139
162
  - test/builder/anything.rb
140
163
  - test/builder/comment.ru
141
164
  - test/builder/end.ru
@@ -153,8 +176,10 @@ files:
153
176
  - test/cgi/test
154
177
  - test/cgi/test+directory/test+file
155
178
  - test/cgi/test.fcgi
179
+ - test/cgi/test.gz
156
180
  - test/cgi/test.ru
157
181
  - test/gemloader.rb
182
+ - test/helper.rb
158
183
  - test/multipart/bad_robots
159
184
  - test/multipart/binary
160
185
  - test/multipart/content_type_and_no_filename
@@ -163,10 +188,12 @@ files:
163
188
  - test/multipart/file1.txt
164
189
  - test/multipart/filename_and_modification_param
165
190
  - test/multipart/filename_and_no_name
191
+ - test/multipart/filename_with_encoded_words
166
192
  - test/multipart/filename_with_escaped_quotes
167
193
  - test/multipart/filename_with_escaped_quotes_and_modification_param
168
194
  - test/multipart/filename_with_null_byte
169
195
  - test/multipart/filename_with_percent_escaped_quotes
196
+ - test/multipart/filename_with_single_quote
170
197
  - test/multipart/filename_with_unescaped_percentages
171
198
  - test/multipart/filename_with_unescaped_percentages2
172
199
  - test/multipart/filename_with_unescaped_percentages3
@@ -176,9 +203,12 @@ files:
176
203
  - test/multipart/mixed_files
177
204
  - test/multipart/nested
178
205
  - test/multipart/none
206
+ - test/multipart/quoted
207
+ - test/multipart/rack-logo.png
179
208
  - test/multipart/semicolon
180
209
  - test/multipart/text
181
210
  - test/multipart/three_files_three_fields
211
+ - test/multipart/unity3d_wwwform
182
212
  - test/multipart/webkit
183
213
  - test/rackup/config.ru
184
214
  - test/registering_handler/rack/handler/registering_myself.rb
@@ -189,14 +219,15 @@ files:
189
219
  - test/spec_cascade.rb
190
220
  - test/spec_cgi.rb
191
221
  - test/spec_chunked.rb
192
- - test/spec_commonlogger.rb
193
- - test/spec_conditionalget.rb
222
+ - test/spec_common_logger.rb
223
+ - test/spec_conditional_get.rb
194
224
  - test/spec_config.rb
195
225
  - test/spec_content_length.rb
196
226
  - test/spec_content_type.rb
197
227
  - test/spec_deflater.rb
198
228
  - test/spec_directory.rb
199
229
  - test/spec_etag.rb
230
+ - test/spec_events.rb
200
231
  - test/spec_fastcgi.rb
201
232
  - test/spec_file.rb
202
233
  - test/spec_handler.rb
@@ -205,12 +236,12 @@ files:
205
236
  - test/spec_lobster.rb
206
237
  - test/spec_lock.rb
207
238
  - test/spec_logger.rb
208
- - test/spec_methodoverride.rb
239
+ - test/spec_media_type.rb
240
+ - test/spec_method_override.rb
209
241
  - test/spec_mime.rb
210
242
  - test/spec_mock.rb
211
- - test/spec_mongrel.rb
212
243
  - test/spec_multipart.rb
213
- - test/spec_nulllogger.rb
244
+ - test/spec_null_logger.rb
214
245
  - test/spec_recursive.rb
215
246
  - test/spec_request.rb
216
247
  - test/spec_response.rb
@@ -219,11 +250,12 @@ files:
219
250
  - test/spec_sendfile.rb
220
251
  - test/spec_server.rb
221
252
  - test/spec_session_abstract_id.rb
253
+ - test/spec_session_abstract_session_hash.rb
222
254
  - test/spec_session_cookie.rb
223
255
  - test/spec_session_memcache.rb
224
256
  - test/spec_session_pool.rb
225
- - test/spec_showexceptions.rb
226
- - test/spec_showstatus.rb
257
+ - test/spec_show_exceptions.rb
258
+ - test/spec_show_status.rb
227
259
  - test/spec_static.rb
228
260
  - test/spec_tempfile_reaper.rb
229
261
  - test/spec_thin.rb
@@ -232,6 +264,7 @@ files:
232
264
  - test/spec_version.rb
233
265
  - test/spec_webrick.rb
234
266
  - test/static/another/index.html
267
+ - test/static/foo.html
235
268
  - test/static/index.html
236
269
  - test/testrequest.rb
237
270
  - test/unregistered_handler/rack/handler/unregistered.rb
@@ -248,64 +281,67 @@ required_ruby_version: !ruby/object:Gem::Requirement
248
281
  requirements:
249
282
  - - ">="
250
283
  - !ruby/object:Gem::Version
251
- version: '0'
284
+ version: 2.2.2
252
285
  required_rubygems_version: !ruby/object:Gem::Requirement
253
286
  requirements:
254
287
  - - ">="
255
288
  - !ruby/object:Gem::Version
256
289
  version: '0'
257
290
  requirements: []
258
- rubygems_version: 3.0.3
291
+ rubyforge_project:
292
+ rubygems_version: 2.6.8
259
293
  signing_key:
260
294
  specification_version: 4
261
295
  summary: a modular Ruby webserver interface
262
296
  test_files:
263
- - test/spec_multipart.rb
297
+ - test/spec_auth_basic.rb
298
+ - test/spec_auth_digest.rb
299
+ - test/spec_body_proxy.rb
300
+ - test/spec_builder.rb
301
+ - test/spec_cascade.rb
302
+ - test/spec_cgi.rb
303
+ - test/spec_chunked.rb
304
+ - test/spec_common_logger.rb
305
+ - test/spec_conditional_get.rb
306
+ - test/spec_config.rb
307
+ - test/spec_content_length.rb
308
+ - test/spec_content_type.rb
264
309
  - test/spec_deflater.rb
265
- - test/spec_static.rb
266
- - test/spec_session_cookie.rb
267
- - test/spec_commonlogger.rb
268
- - test/spec_session_pool.rb
269
- - test/spec_methodoverride.rb
310
+ - test/spec_directory.rb
270
311
  - test/spec_etag.rb
271
- - test/spec_version.rb
312
+ - test/spec_events.rb
313
+ - test/spec_fastcgi.rb
314
+ - test/spec_file.rb
272
315
  - test/spec_handler.rb
273
- - test/spec_thin.rb
274
- - test/spec_showexceptions.rb
275
- - test/spec_session_abstract_id.rb
316
+ - test/spec_head.rb
317
+ - test/spec_lint.rb
318
+ - test/spec_lobster.rb
319
+ - test/spec_lock.rb
320
+ - test/spec_logger.rb
321
+ - test/spec_media_type.rb
322
+ - test/spec_method_override.rb
276
323
  - test/spec_mime.rb
324
+ - test/spec_mock.rb
325
+ - test/spec_multipart.rb
326
+ - test/spec_null_logger.rb
277
327
  - test/spec_recursive.rb
278
- - test/spec_cgi.rb
279
- - test/spec_content_type.rb
280
328
  - test/spec_request.rb
281
- - test/spec_showstatus.rb
282
- - test/spec_chunked.rb
329
+ - test/spec_response.rb
330
+ - test/spec_rewindable_input.rb
283
331
  - test/spec_runtime.rb
284
- - test/spec_fastcgi.rb
285
- - test/spec_builder.rb
286
- - test/spec_config.rb
287
- - test/spec_mongrel.rb
288
- - test/spec_utils.rb
289
332
  - test/spec_sendfile.rb
290
- - test/spec_lobster.rb
291
- - test/spec_lint.rb
292
- - test/spec_tempfile_reaper.rb
293
- - test/spec_mock.rb
294
- - test/spec_conditionalget.rb
295
333
  - test/spec_server.rb
296
- - test/spec_directory.rb
297
- - test/spec_webrick.rb
298
- - test/spec_response.rb
299
- - test/spec_file.rb
300
- - test/spec_body_proxy.rb
301
- - test/spec_logger.rb
302
- - test/spec_auth_digest.rb
303
- - test/spec_urlmap.rb
304
- - test/spec_nulllogger.rb
305
- - test/spec_cascade.rb
306
- - test/spec_auth_basic.rb
307
- - test/spec_head.rb
308
- - test/spec_lock.rb
309
- - test/spec_rewindable_input.rb
334
+ - test/spec_session_abstract_id.rb
335
+ - test/spec_session_abstract_session_hash.rb
336
+ - test/spec_session_cookie.rb
310
337
  - test/spec_session_memcache.rb
311
- - test/spec_content_length.rb
338
+ - test/spec_session_pool.rb
339
+ - test/spec_show_exceptions.rb
340
+ - test/spec_show_status.rb
341
+ - test/spec_static.rb
342
+ - test/spec_tempfile_reaper.rb
343
+ - test/spec_thin.rb
344
+ - test/spec_urlmap.rb
345
+ - test/spec_utils.rb
346
+ - test/spec_version.rb
347
+ - test/spec_webrick.rb