rack 1.6.13 → 2.0.1
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.
- checksums.yaml +5 -5
- data/COPYING +1 -1
- data/HISTORY.md +138 -8
- data/README.rdoc +17 -25
- data/Rakefile +6 -14
- data/SPEC +8 -9
- data/contrib/rack_logo.svg +164 -111
- data/example/protectedlobster.rb +1 -1
- data/example/protectedlobster.ru +1 -1
- data/lib/rack/auth/abstract/request.rb +5 -1
- data/lib/rack/auth/digest/params.rb +2 -3
- data/lib/rack/auth/digest/request.rb +1 -1
- data/lib/rack/body_proxy.rb +14 -9
- data/lib/rack/builder.rb +3 -3
- data/lib/rack/chunked.rb +5 -5
- data/lib/rack/{commonlogger.rb → common_logger.rb} +3 -3
- data/lib/rack/{conditionalget.rb → conditional_get.rb} +0 -0
- data/lib/rack/content_length.rb +2 -2
- data/lib/rack/deflater.rb +4 -4
- data/lib/rack/directory.rb +66 -54
- data/lib/rack/etag.rb +4 -3
- data/lib/rack/events.rb +154 -0
- data/lib/rack/file.rb +63 -39
- data/lib/rack/handler/cgi.rb +15 -16
- data/lib/rack/handler/fastcgi.rb +13 -14
- data/lib/rack/handler/lsws.rb +11 -11
- data/lib/rack/handler/scgi.rb +15 -15
- data/lib/rack/handler/thin.rb +3 -0
- data/lib/rack/handler/webrick.rb +22 -24
- data/lib/rack/handler.rb +3 -25
- data/lib/rack/head.rb +15 -17
- data/lib/rack/lint.rb +38 -38
- data/lib/rack/lobster.rb +1 -1
- data/lib/rack/lock.rb +6 -10
- data/lib/rack/logger.rb +2 -2
- data/lib/rack/media_type.rb +38 -0
- data/lib/rack/{methodoverride.rb → method_override.rb} +4 -11
- data/lib/rack/mime.rb +18 -5
- data/lib/rack/mock.rb +35 -53
- data/lib/rack/multipart/generator.rb +5 -5
- data/lib/rack/multipart/parser.rb +272 -158
- data/lib/rack/multipart/uploaded_file.rb +1 -2
- data/lib/rack/multipart.rb +35 -6
- data/lib/rack/{nulllogger.rb → null_logger.rb} +1 -1
- data/lib/rack/query_parser.rb +192 -0
- data/lib/rack/recursive.rb +8 -8
- data/lib/rack/request.rb +383 -307
- data/lib/rack/response.rb +129 -56
- data/lib/rack/rewindable_input.rb +1 -12
- data/lib/rack/runtime.rb +10 -18
- data/lib/rack/sendfile.rb +5 -7
- data/lib/rack/server.rb +31 -25
- data/lib/rack/session/abstract/id.rb +95 -135
- data/lib/rack/session/cookie.rb +26 -28
- data/lib/rack/session/memcache.rb +8 -14
- data/lib/rack/session/pool.rb +14 -21
- data/lib/rack/show_exceptions.rb +386 -0
- data/lib/rack/{showstatus.rb → show_status.rb} +3 -3
- data/lib/rack/static.rb +30 -5
- data/lib/rack/tempfile_reaper.rb +2 -2
- data/lib/rack/urlmap.rb +15 -14
- data/lib/rack/utils.rb +135 -210
- data/lib/rack.rb +70 -21
- data/rack.gemspec +7 -5
- data/test/builder/an_underscore_app.rb +5 -0
- data/test/builder/options.ru +1 -1
- data/test/cgi/test.fcgi +1 -0
- data/test/cgi/test.gz +0 -0
- data/test/helper.rb +34 -0
- data/test/multipart/filename_with_encoded_words +7 -0
- data/test/multipart/{filename_with_null_byte → filename_with_single_quote} +1 -1
- data/test/multipart/quoted +15 -0
- data/test/multipart/rack-logo.png +0 -0
- data/test/multipart/unity3d_wwwform +11 -0
- data/test/registering_handler/rack/handler/registering_myself.rb +1 -1
- data/test/spec_auth_basic.rb +27 -19
- data/test/spec_auth_digest.rb +47 -46
- data/test/spec_body_proxy.rb +27 -27
- data/test/spec_builder.rb +51 -41
- data/test/spec_cascade.rb +24 -22
- data/test/spec_cgi.rb +49 -67
- data/test/spec_chunked.rb +36 -34
- data/test/{spec_commonlogger.rb → spec_common_logger.rb} +23 -21
- data/test/{spec_conditionalget.rb → spec_conditional_get.rb} +29 -28
- data/test/spec_config.rb +3 -2
- data/test/spec_content_length.rb +18 -17
- data/test/spec_content_type.rb +13 -12
- data/test/spec_deflater.rb +66 -40
- data/test/spec_directory.rb +87 -27
- data/test/spec_etag.rb +32 -31
- data/test/spec_events.rb +133 -0
- data/test/spec_fastcgi.rb +50 -72
- data/test/spec_file.rb +107 -77
- data/test/spec_handler.rb +19 -34
- data/test/spec_head.rb +15 -14
- data/test/spec_lint.rb +162 -197
- data/test/spec_lobster.rb +24 -23
- data/test/spec_lock.rb +69 -39
- data/test/spec_logger.rb +4 -3
- data/test/spec_media_type.rb +42 -0
- data/test/spec_method_override.rb +83 -0
- data/test/spec_mime.rb +19 -19
- data/test/spec_mock.rb +196 -151
- data/test/spec_multipart.rb +317 -201
- data/test/{spec_nulllogger.rb → spec_null_logger.rb} +5 -4
- data/test/spec_recursive.rb +17 -14
- data/test/spec_request.rb +768 -607
- data/test/spec_response.rb +214 -111
- data/test/spec_rewindable_input.rb +50 -40
- data/test/spec_runtime.rb +11 -10
- data/test/spec_sendfile.rb +30 -35
- data/test/spec_server.rb +78 -52
- data/test/spec_session_abstract_id.rb +11 -33
- data/test/spec_session_abstract_session_hash.rb +28 -0
- data/test/spec_session_cookie.rb +97 -65
- data/test/spec_session_memcache.rb +63 -101
- data/test/spec_session_pool.rb +48 -84
- data/test/spec_show_exceptions.rb +80 -0
- data/test/{spec_showstatus.rb → spec_show_status.rb} +36 -35
- data/test/spec_static.rb +71 -32
- data/test/spec_tempfile_reaper.rb +11 -10
- data/test/spec_thin.rb +55 -50
- data/test/spec_urlmap.rb +79 -78
- data/test/spec_utils.rb +441 -346
- data/test/spec_version.rb +2 -8
- data/test/spec_webrick.rb +91 -67
- data/test/static/foo.html +1 -0
- data/test/testrequest.rb +1 -1
- data/test/unregistered_handler/rack/handler/unregistered.rb +1 -1
- data/test/unregistered_handler/rack/handler/unregistered_long_one.rb +1 -1
- metadata +103 -69
- data/KNOWN-ISSUES +0 -44
- data/lib/rack/backports/uri/common_18.rb +0 -56
- data/lib/rack/backports/uri/common_192.rb +0 -52
- data/lib/rack/backports/uri/common_193.rb +0 -29
- data/lib/rack/handler/evented_mongrel.rb +0 -8
- data/lib/rack/handler/mongrel.rb +0 -106
- data/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
- data/lib/rack/showexceptions.rb +0 -387
- data/lib/rack/utils/okjson.rb +0 -600
- data/test/spec_methodoverride.rb +0 -111
- data/test/spec_mongrel.rb +0 -182
- data/test/spec_session_persisted_secure_secure_session_hash.rb +0 -73
- data/test/spec_showexceptions.rb +0 -98
data/test/spec_handler.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'minitest/autorun'
|
1
2
|
require 'rack/handler'
|
2
3
|
|
3
4
|
class Rack::Handler::Lobster; end
|
@@ -5,66 +6,50 @@ class RockLobster; end
|
|
5
6
|
|
6
7
|
describe Rack::Handler do
|
7
8
|
it "has registered default handlers" do
|
8
|
-
Rack::Handler.get('cgi').
|
9
|
-
Rack::Handler.get('webrick').
|
9
|
+
Rack::Handler.get('cgi').must_equal Rack::Handler::CGI
|
10
|
+
Rack::Handler.get('webrick').must_equal Rack::Handler::WEBrick
|
10
11
|
|
11
12
|
begin
|
12
|
-
Rack::Handler.get('fastcgi').
|
13
|
-
rescue LoadError
|
14
|
-
end
|
15
|
-
|
16
|
-
begin
|
17
|
-
Rack::Handler.get('mongrel').should.equal Rack::Handler::Mongrel
|
13
|
+
Rack::Handler.get('fastcgi').must_equal Rack::Handler::FastCGI
|
18
14
|
rescue LoadError
|
19
15
|
end
|
20
16
|
end
|
21
17
|
|
22
|
-
|
18
|
+
it "raise LoadError if handler doesn't exist" do
|
23
19
|
lambda {
|
24
20
|
Rack::Handler.get('boom')
|
25
|
-
}.
|
26
|
-
end
|
21
|
+
}.must_raise(LoadError)
|
27
22
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
# constants, so the best we can do is no-op here and not test it.
|
32
|
-
begin
|
33
|
-
Rack::Handler._const_get('Object', false)
|
34
|
-
rescue NameError
|
35
|
-
lambda {
|
36
|
-
Rack::Handler.get('Object')
|
37
|
-
}.should.raise(LoadError)
|
38
|
-
end
|
23
|
+
lambda {
|
24
|
+
Rack::Handler.get('Object')
|
25
|
+
}.must_raise(LoadError)
|
39
26
|
end
|
40
27
|
|
41
|
-
|
42
|
-
Rack::Handler.get('Lobster').
|
28
|
+
it "get unregistered, but already required, handler by name" do
|
29
|
+
Rack::Handler.get('Lobster').must_equal Rack::Handler::Lobster
|
43
30
|
end
|
44
31
|
|
45
|
-
|
32
|
+
it "register custom handler" do
|
46
33
|
Rack::Handler.register('rock_lobster', 'RockLobster')
|
47
|
-
Rack::Handler.get('rock_lobster').
|
34
|
+
Rack::Handler.get('rock_lobster').must_equal RockLobster
|
48
35
|
end
|
49
36
|
|
50
|
-
|
37
|
+
it "not need registration for properly coded handlers even if not already required" do
|
51
38
|
begin
|
52
39
|
$LOAD_PATH.push File.expand_path('../unregistered_handler', __FILE__)
|
53
|
-
Rack::Handler.get('Unregistered').
|
54
|
-
lambda {
|
55
|
-
|
56
|
-
}.should.raise LoadError
|
57
|
-
Rack::Handler.get('UnregisteredLongOne').should.equal Rack::Handler::UnregisteredLongOne
|
40
|
+
Rack::Handler.get('Unregistered').must_equal Rack::Handler::Unregistered
|
41
|
+
lambda { Rack::Handler.get('UnRegistered') }.must_raise LoadError
|
42
|
+
Rack::Handler.get('UnregisteredLongOne').must_equal Rack::Handler::UnregisteredLongOne
|
58
43
|
ensure
|
59
44
|
$LOAD_PATH.delete File.expand_path('../unregistered_handler', __FILE__)
|
60
45
|
end
|
61
46
|
end
|
62
47
|
|
63
|
-
|
48
|
+
it "allow autoloaded handlers to be registered properly while being loaded" do
|
64
49
|
path = File.expand_path('../registering_handler', __FILE__)
|
65
50
|
begin
|
66
51
|
$LOAD_PATH.push path
|
67
|
-
Rack::Handler.get('registering_myself').
|
52
|
+
Rack::Handler.get('registering_myself').must_equal Rack::Handler::RegisteringMyself
|
68
53
|
ensure
|
69
54
|
$LOAD_PATH.delete path
|
70
55
|
end
|
data/test/spec_head.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'minitest/autorun'
|
1
2
|
require 'rack/head'
|
2
3
|
require 'rack/lint'
|
3
4
|
require 'rack/mock'
|
@@ -15,31 +16,31 @@ describe Rack::Head do
|
|
15
16
|
return response, body
|
16
17
|
end
|
17
18
|
|
18
|
-
|
19
|
+
it "pass GET, POST, PUT, DELETE, OPTIONS, TRACE requests" do
|
19
20
|
%w[GET POST PUT DELETE OPTIONS TRACE].each do |type|
|
20
21
|
resp, _ = test_response("REQUEST_METHOD" => type)
|
21
22
|
|
22
|
-
resp[0].
|
23
|
-
resp[1].
|
24
|
-
resp[2].to_enum.to_a.
|
23
|
+
resp[0].must_equal 200
|
24
|
+
resp[1].must_equal "Content-type" => "test/plain", "Content-length" => "3"
|
25
|
+
resp[2].to_enum.to_a.must_equal ["foo"]
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
28
|
-
|
29
|
+
it "remove body from HEAD requests" do
|
29
30
|
resp, _ = test_response("REQUEST_METHOD" => "HEAD")
|
30
31
|
|
31
|
-
resp[0].
|
32
|
-
resp[1].
|
33
|
-
resp[2].to_enum.to_a.
|
32
|
+
resp[0].must_equal 200
|
33
|
+
resp[1].must_equal "Content-type" => "test/plain", "Content-length" => "3"
|
34
|
+
resp[2].to_enum.to_a.must_equal []
|
34
35
|
end
|
35
36
|
|
36
|
-
|
37
|
+
it "close the body when it is removed" do
|
37
38
|
resp, body = test_response("REQUEST_METHOD" => "HEAD")
|
38
|
-
resp[0].
|
39
|
-
resp[1].
|
40
|
-
resp[2].to_enum.to_a.
|
41
|
-
body.
|
39
|
+
resp[0].must_equal 200
|
40
|
+
resp[1].must_equal "Content-type" => "test/plain", "Content-length" => "3"
|
41
|
+
resp[2].to_enum.to_a.must_equal []
|
42
|
+
body.wont_be :closed?
|
42
43
|
resp[2].close
|
43
|
-
body.
|
44
|
+
body.must_be :closed?
|
44
45
|
end
|
45
46
|
end
|