rack 1.6.13 → 2.0.9

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 (141) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING +1 -1
  3. data/HISTORY.md +138 -8
  4. data/README.rdoc +18 -28
  5. data/Rakefile +6 -14
  6. data/SPEC +3 -3
  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/content_length.rb +2 -2
  18. data/lib/rack/deflater.rb +4 -39
  19. data/lib/rack/directory.rb +66 -54
  20. data/lib/rack/etag.rb +5 -4
  21. data/lib/rack/events.rb +154 -0
  22. data/lib/rack/file.rb +64 -40
  23. data/lib/rack/handler/cgi.rb +15 -16
  24. data/lib/rack/handler/fastcgi.rb +13 -14
  25. data/lib/rack/handler/lsws.rb +11 -11
  26. data/lib/rack/handler/scgi.rb +15 -15
  27. data/lib/rack/handler/thin.rb +3 -0
  28. data/lib/rack/handler/webrick.rb +24 -26
  29. data/lib/rack/handler.rb +3 -25
  30. data/lib/rack/head.rb +15 -17
  31. data/lib/rack/lint.rb +40 -40
  32. data/lib/rack/lobster.rb +1 -1
  33. data/lib/rack/lock.rb +15 -10
  34. data/lib/rack/logger.rb +2 -2
  35. data/lib/rack/media_type.rb +38 -0
  36. data/lib/rack/{methodoverride.rb → method_override.rb} +6 -6
  37. data/lib/rack/mime.rb +18 -5
  38. data/lib/rack/mock.rb +36 -54
  39. data/lib/rack/multipart/generator.rb +5 -5
  40. data/lib/rack/multipart/parser.rb +270 -157
  41. data/lib/rack/multipart/uploaded_file.rb +1 -2
  42. data/lib/rack/multipart.rb +35 -6
  43. data/lib/rack/{nulllogger.rb → null_logger.rb} +1 -1
  44. data/lib/rack/query_parser.rb +192 -0
  45. data/lib/rack/recursive.rb +8 -8
  46. data/lib/rack/request.rb +394 -305
  47. data/lib/rack/response.rb +130 -57
  48. data/lib/rack/rewindable_input.rb +1 -12
  49. data/lib/rack/runtime.rb +10 -18
  50. data/lib/rack/sendfile.rb +5 -7
  51. data/lib/rack/server.rb +30 -23
  52. data/lib/rack/session/abstract/id.rb +110 -75
  53. data/lib/rack/session/cookie.rb +24 -17
  54. data/lib/rack/session/memcache.rb +9 -9
  55. data/lib/rack/session/pool.rb +8 -8
  56. data/lib/rack/show_exceptions.rb +386 -0
  57. data/lib/rack/{showstatus.rb → show_status.rb} +3 -3
  58. data/lib/rack/static.rb +30 -5
  59. data/lib/rack/tempfile_reaper.rb +2 -2
  60. data/lib/rack/urlmap.rb +15 -14
  61. data/lib/rack/utils.rb +138 -211
  62. data/lib/rack.rb +70 -21
  63. data/rack.gemspec +10 -9
  64. data/test/builder/an_underscore_app.rb +5 -0
  65. data/test/builder/options.ru +1 -1
  66. data/test/cgi/test.fcgi +1 -0
  67. data/test/cgi/test.gz +0 -0
  68. data/test/helper.rb +34 -0
  69. data/test/multipart/filename_with_encoded_words +7 -0
  70. data/test/multipart/filename_with_single_quote +7 -0
  71. data/test/multipart/quoted +15 -0
  72. data/test/multipart/rack-logo.png +0 -0
  73. data/test/multipart/unity3d_wwwform +11 -0
  74. data/test/registering_handler/rack/handler/registering_myself.rb +1 -1
  75. data/test/spec_auth_basic.rb +27 -19
  76. data/test/spec_auth_digest.rb +47 -46
  77. data/test/spec_body_proxy.rb +27 -27
  78. data/test/spec_builder.rb +51 -41
  79. data/test/spec_cascade.rb +24 -22
  80. data/test/spec_cgi.rb +49 -67
  81. data/test/spec_chunked.rb +37 -35
  82. data/test/{spec_commonlogger.rb → spec_common_logger.rb} +23 -21
  83. data/test/{spec_conditionalget.rb → spec_conditional_get.rb} +29 -28
  84. data/test/spec_config.rb +3 -2
  85. data/test/spec_content_length.rb +18 -17
  86. data/test/spec_content_type.rb +13 -12
  87. data/test/spec_deflater.rb +85 -49
  88. data/test/spec_directory.rb +87 -27
  89. data/test/spec_etag.rb +32 -31
  90. data/test/spec_events.rb +133 -0
  91. data/test/spec_fastcgi.rb +50 -72
  92. data/test/spec_file.rb +120 -77
  93. data/test/spec_handler.rb +19 -34
  94. data/test/spec_head.rb +15 -14
  95. data/test/spec_lint.rb +164 -199
  96. data/test/spec_lobster.rb +24 -23
  97. data/test/spec_lock.rb +79 -39
  98. data/test/spec_logger.rb +4 -3
  99. data/test/spec_media_type.rb +42 -0
  100. data/test/{spec_methodoverride.rb → spec_method_override.rb} +34 -35
  101. data/test/spec_mime.rb +19 -19
  102. data/test/spec_mock.rb +206 -144
  103. data/test/spec_multipart.rb +322 -200
  104. data/test/{spec_nulllogger.rb → spec_null_logger.rb} +5 -4
  105. data/test/spec_recursive.rb +17 -14
  106. data/test/spec_request.rb +780 -605
  107. data/test/spec_response.rb +233 -112
  108. data/test/spec_rewindable_input.rb +50 -40
  109. data/test/spec_runtime.rb +11 -10
  110. data/test/spec_sendfile.rb +30 -35
  111. data/test/spec_server.rb +78 -52
  112. data/test/spec_session_abstract_id.rb +11 -33
  113. data/test/spec_session_abstract_session_hash.rb +45 -0
  114. data/test/spec_session_cookie.rb +99 -67
  115. data/test/spec_session_memcache.rb +67 -68
  116. data/test/spec_session_pool.rb +52 -51
  117. data/test/{spec_showexceptions.rb → spec_show_exceptions.rb} +23 -28
  118. data/test/{spec_showstatus.rb → spec_show_status.rb} +36 -35
  119. data/test/spec_static.rb +71 -32
  120. data/test/spec_tempfile_reaper.rb +11 -10
  121. data/test/spec_thin.rb +55 -50
  122. data/test/spec_urlmap.rb +79 -78
  123. data/test/spec_utils.rb +441 -346
  124. data/test/spec_version.rb +2 -8
  125. data/test/spec_webrick.rb +93 -71
  126. data/test/static/foo.html +1 -0
  127. data/test/testrequest.rb +1 -1
  128. data/test/unregistered_handler/rack/handler/unregistered.rb +1 -1
  129. data/test/unregistered_handler/rack/handler/unregistered_long_one.rb +1 -1
  130. metadata +57 -36
  131. data/KNOWN-ISSUES +0 -44
  132. data/lib/rack/backports/uri/common_18.rb +0 -56
  133. data/lib/rack/backports/uri/common_192.rb +0 -52
  134. data/lib/rack/backports/uri/common_193.rb +0 -29
  135. data/lib/rack/handler/evented_mongrel.rb +0 -8
  136. data/lib/rack/handler/mongrel.rb +0 -106
  137. data/lib/rack/handler/swiftiplied_mongrel.rb +0 -8
  138. data/lib/rack/showexceptions.rb +0 -387
  139. data/lib/rack/utils/okjson.rb +0 -600
  140. data/test/spec_mongrel.rb +0 -182
  141. /data/lib/rack/{conditionalget.rb → conditional_get.rb} +0 -0
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