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.

Files changed (144) 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 +8 -9
  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/auth/abstract/request.rb +5 -1
  11. data/lib/rack/auth/digest/params.rb +2 -3
  12. data/lib/rack/auth/digest/request.rb +1 -1
  13. data/lib/rack/body_proxy.rb +14 -9
  14. data/lib/rack/builder.rb +3 -3
  15. data/lib/rack/chunked.rb +5 -5
  16. data/lib/rack/{commonlogger.rb → common_logger.rb} +3 -3
  17. data/lib/rack/{conditionalget.rb → conditional_get.rb} +0 -0
  18. data/lib/rack/content_length.rb +2 -2
  19. data/lib/rack/deflater.rb +4 -4
  20. data/lib/rack/directory.rb +66 -54
  21. data/lib/rack/etag.rb +4 -3
  22. data/lib/rack/events.rb +154 -0
  23. data/lib/rack/file.rb +63 -39
  24. data/lib/rack/handler/cgi.rb +15 -16
  25. data/lib/rack/handler/fastcgi.rb +13 -14
  26. data/lib/rack/handler/lsws.rb +11 -11
  27. data/lib/rack/handler/scgi.rb +15 -15
  28. data/lib/rack/handler/thin.rb +3 -0
  29. data/lib/rack/handler/webrick.rb +22 -24
  30. data/lib/rack/handler.rb +3 -25
  31. data/lib/rack/head.rb +15 -17
  32. data/lib/rack/lint.rb +38 -38
  33. data/lib/rack/lobster.rb +1 -1
  34. data/lib/rack/lock.rb +6 -10
  35. data/lib/rack/logger.rb +2 -2
  36. data/lib/rack/media_type.rb +38 -0
  37. data/lib/rack/{methodoverride.rb → method_override.rb} +4 -11
  38. data/lib/rack/mime.rb +18 -5
  39. data/lib/rack/mock.rb +35 -53
  40. data/lib/rack/multipart/generator.rb +5 -5
  41. data/lib/rack/multipart/parser.rb +272 -158
  42. data/lib/rack/multipart/uploaded_file.rb +1 -2
  43. data/lib/rack/multipart.rb +35 -6
  44. data/lib/rack/{nulllogger.rb → null_logger.rb} +1 -1
  45. data/lib/rack/query_parser.rb +192 -0
  46. data/lib/rack/recursive.rb +8 -8
  47. data/lib/rack/request.rb +383 -307
  48. data/lib/rack/response.rb +129 -56
  49. data/lib/rack/rewindable_input.rb +1 -12
  50. data/lib/rack/runtime.rb +10 -18
  51. data/lib/rack/sendfile.rb +5 -7
  52. data/lib/rack/server.rb +31 -25
  53. data/lib/rack/session/abstract/id.rb +95 -135
  54. data/lib/rack/session/cookie.rb +26 -28
  55. data/lib/rack/session/memcache.rb +8 -14
  56. data/lib/rack/session/pool.rb +14 -21
  57. data/lib/rack/show_exceptions.rb +386 -0
  58. data/lib/rack/{showstatus.rb → show_status.rb} +3 -3
  59. data/lib/rack/static.rb +30 -5
  60. data/lib/rack/tempfile_reaper.rb +2 -2
  61. data/lib/rack/urlmap.rb +15 -14
  62. data/lib/rack/utils.rb +135 -210
  63. data/lib/rack.rb +70 -21
  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_null_byte → filename_with_single_quote} +1 -1
  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 +36 -34
  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 +66 -40
  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 +107 -77
  94. data/test/spec_handler.rb +19 -34
  95. data/test/spec_head.rb +15 -14
  96. data/test/spec_lint.rb +162 -197
  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_method_override.rb +83 -0
  102. data/test/spec_mime.rb +19 -19
  103. data/test/spec_mock.rb +196 -151
  104. data/test/spec_multipart.rb +317 -201
  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 +214 -111
  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 +28 -0
  115. data/test/spec_session_cookie.rb +97 -65
  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 +91 -67
  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 +103 -69
  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_methodoverride.rb +0 -111
  142. data/test/spec_mongrel.rb +0 -182
  143. data/test/spec_session_persisted_secure_secure_session_hash.rb +0 -73
  144. 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').should.equal Rack::Handler::CGI
9
- Rack::Handler.get('webrick').should.equal Rack::Handler::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').should.equal Rack::Handler::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
- should "raise LoadError if handler doesn't exist" do
18
+ it "raise LoadError if handler doesn't exist" do
23
19
  lambda {
24
20
  Rack::Handler.get('boom')
25
- }.should.raise(LoadError)
26
- end
21
+ }.must_raise(LoadError)
27
22
 
28
- should "raise LoadError if handler isn't nested under Rack::Handler" do
29
- # Feature-detect whether Ruby can do non-inherited const lookups.
30
- # If it can't, then Rack::Handler may lookup non-handler toplevel
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
- should "get unregistered, but already required, handler by name" do
42
- Rack::Handler.get('Lobster').should.equal Rack::Handler::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
- should "register custom handler" do
32
+ it "register custom handler" do
46
33
  Rack::Handler.register('rock_lobster', 'RockLobster')
47
- Rack::Handler.get('rock_lobster').should.equal RockLobster
34
+ Rack::Handler.get('rock_lobster').must_equal RockLobster
48
35
  end
49
36
 
50
- should "not need registration for properly coded handlers even if not already required" do
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').should.equal Rack::Handler::Unregistered
54
- lambda {
55
- Rack::Handler.get('UnRegistered')
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
- should "allow autoloaded handlers to be registered properly while being loaded" do
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').should.equal Rack::Handler::RegisteringMyself
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
- should "pass GET, POST, PUT, DELETE, OPTIONS, TRACE requests" do
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].should.equal(200)
23
- resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"})
24
- resp[2].to_enum.to_a.should.equal(["foo"])
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
- should "remove body from HEAD requests" do
29
+ it "remove body from HEAD requests" do
29
30
  resp, _ = test_response("REQUEST_METHOD" => "HEAD")
30
31
 
31
- resp[0].should.equal(200)
32
- resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"})
33
- resp[2].to_enum.to_a.should.equal([])
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
- should "close the body when it is removed" do
37
+ it "close the body when it is removed" do
37
38
  resp, body = test_response("REQUEST_METHOD" => "HEAD")
38
- resp[0].should.equal(200)
39
- resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"})
40
- resp[2].to_enum.to_a.should.equal([])
41
- body.should.not.be.closed
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.should.be.closed
44
+ body.must_be :closed?
44
45
  end
45
46
  end