rack 0.4.0 → 0.9.0
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.
Potentially problematic release.
This version of rack might be problematic. Click here for more details.
- data/RDOX +61 -3
- data/README +52 -37
- data/Rakefile +9 -0
- data/SPEC +6 -3
- data/bin/rackup +0 -0
- data/lib/rack.rb +7 -2
- data/lib/rack/adapter/camping.rb +1 -1
- data/lib/rack/auth/openid.rb +4 -3
- data/lib/rack/builder.rb +12 -1
- data/lib/rack/conditionalget.rb +43 -0
- data/lib/rack/content_length.rb +25 -0
- data/lib/rack/deflater.rb +29 -5
- data/lib/rack/directory.rb +82 -91
- data/lib/rack/file.rb +45 -76
- data/lib/rack/handler.rb +4 -0
- data/lib/rack/handler/evented_mongrel.rb +1 -1
- data/lib/rack/handler/fastcgi.rb +2 -0
- data/lib/rack/handler/mongrel.rb +6 -2
- data/lib/rack/handler/swiftiplied_mongrel.rb +8 -0
- data/lib/rack/handler/thin.rb +15 -0
- data/lib/rack/handler/webrick.rb +8 -4
- data/lib/rack/head.rb +19 -0
- data/lib/rack/lint.rb +74 -10
- data/lib/rack/lobster.rb +13 -13
- data/lib/rack/methodoverride.rb +27 -0
- data/lib/rack/mime.rb +204 -0
- data/lib/rack/request.rb +10 -1
- data/lib/rack/response.rb +7 -2
- data/lib/rack/session/abstract/id.rb +14 -1
- data/lib/rack/session/cookie.rb +19 -1
- data/lib/rack/session/memcache.rb +1 -1
- data/lib/rack/session/pool.rb +1 -1
- data/lib/rack/showexceptions.rb +5 -1
- data/lib/rack/showstatus.rb +3 -2
- data/lib/rack/urlmap.rb +1 -1
- data/lib/rack/utils.rb +42 -13
- data/test/cgi/lighttpd.conf +1 -1
- data/test/cgi/test +0 -0
- data/test/cgi/test.fcgi +0 -0
- data/test/cgi/test.ru +0 -0
- data/test/spec_rack_builder.rb +34 -0
- data/test/spec_rack_conditionalget.rb +41 -0
- data/test/spec_rack_content_length.rb +43 -0
- data/test/spec_rack_deflater.rb +49 -14
- data/test/spec_rack_file.rb +7 -0
- data/test/spec_rack_handler.rb +3 -3
- data/test/spec_rack_head.rb +30 -0
- data/test/spec_rack_lint.rb +79 -2
- data/test/spec_rack_methodoverride.rb +60 -0
- data/test/spec_rack_mock.rb +1 -1
- data/test/spec_rack_mongrel.rb +20 -1
- data/test/spec_rack_request.rb +46 -1
- data/test/spec_rack_response.rb +10 -3
- data/test/spec_rack_session_cookie.rb +33 -0
- data/test/spec_rack_thin.rb +90 -0
- data/test/spec_rack_utils.rb +20 -18
- data/test/spec_rack_webrick.rb +17 -0
- data/test/testrequest.rb +12 -0
- metadata +91 -5
data/test/spec_rack_response.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'test/spec'
|
2
|
+
require 'set'
|
2
3
|
|
3
4
|
require 'rack/response'
|
4
5
|
|
@@ -7,7 +8,7 @@ context "Rack::Response" do
|
|
7
8
|
response = Rack::Response.new
|
8
9
|
status, header, body = response.finish
|
9
10
|
status.should.equal 200
|
10
|
-
header.should.equal "Content-Type" => "text/html"
|
11
|
+
header.should.equal "Content-Type" => "text/html", "Content-Length" => "0"
|
11
12
|
body.each { |part|
|
12
13
|
part.should.equal ""
|
13
14
|
}
|
@@ -15,7 +16,7 @@ context "Rack::Response" do
|
|
15
16
|
response = Rack::Response.new
|
16
17
|
status, header, body = *response
|
17
18
|
status.should.equal 200
|
18
|
-
header.should.equal "Content-Type" => "text/html"
|
19
|
+
header.should.equal "Content-Type" => "text/html", "Content-Length" => "0"
|
19
20
|
body.each { |part|
|
20
21
|
part.should.equal ""
|
21
22
|
}
|
@@ -62,6 +63,12 @@ context "Rack::Response" do
|
|
62
63
|
/expires=..., \d\d-...-\d\d\d\d \d\d:\d\d:\d\d .../)
|
63
64
|
end
|
64
65
|
|
66
|
+
specify "can set secure cookies" do
|
67
|
+
response = Rack::Response.new
|
68
|
+
response.set_cookie "foo", {:value => "bar", :secure => true}
|
69
|
+
response["Set-Cookie"].should.equal "foo=bar; secure"
|
70
|
+
end
|
71
|
+
|
65
72
|
specify "can delete cookies" do
|
66
73
|
response = Rack::Response.new
|
67
74
|
response.set_cookie "foo", "bar"
|
@@ -82,7 +89,7 @@ context "Rack::Response" do
|
|
82
89
|
str = ""; body.each { |part| str << part }
|
83
90
|
str.should.equal "foobar"
|
84
91
|
|
85
|
-
r = Rack::Response.new(
|
92
|
+
r = Rack::Response.new(["foo", "bar"].to_set)
|
86
93
|
r.write "foo"
|
87
94
|
status, header, body = r.finish
|
88
95
|
str = ""; body.each { |part| str << part }
|
@@ -46,4 +46,37 @@ context "Rack::Session::Cookie" do
|
|
46
46
|
get("/", :fatal => true)
|
47
47
|
}.should.raise(Rack::MockRequest::FatalWarning)
|
48
48
|
end
|
49
|
+
|
50
|
+
specify "creates a new cookie with integrity hash" do
|
51
|
+
res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).get("/")
|
52
|
+
if RUBY_VERSION < "1.9"
|
53
|
+
res["Set-Cookie"].should.match("rack.session=BAh7BiIMY291bnRlcmkG%0A--1439b4d37b9d4b04c603848382f712d6fcd31088")
|
54
|
+
else
|
55
|
+
res["Set-Cookie"].should.match("rack.session=BAh7BkkiDGNvdW50ZXIGOg1lbmNvZGluZyINVVMtQVNDSUlpBg%3D%3D%0A--d7a6637b94d2728194a96c18484e1f7ed9074a83")
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
specify "loads from a cookie wih integrity hash" do
|
60
|
+
res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).get("/")
|
61
|
+
cookie = res["Set-Cookie"]
|
62
|
+
res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).
|
63
|
+
get("/", "HTTP_COOKIE" => cookie)
|
64
|
+
res.body.should.equal '{"counter"=>2}'
|
65
|
+
cookie = res["Set-Cookie"]
|
66
|
+
res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).
|
67
|
+
get("/", "HTTP_COOKIE" => cookie)
|
68
|
+
res.body.should.equal '{"counter"=>3}'
|
69
|
+
end
|
70
|
+
|
71
|
+
specify "ignores tampered with session cookies" do
|
72
|
+
app = Rack::Session::Cookie.new(incrementor, :secret => 'test')
|
73
|
+
response1 = Rack::MockRequest.new(app).get("/")
|
74
|
+
_, digest = response1["Set-Cookie"].split("--")
|
75
|
+
tampered_with_cookie = "hackerman-was-here" + "--" + digest
|
76
|
+
response2 = Rack::MockRequest.new(app).get("/", "HTTP_COOKIE" =>
|
77
|
+
tampered_with_cookie)
|
78
|
+
|
79
|
+
# The tampered-with cookie is ignored, so we get back an identical Set-Cookie
|
80
|
+
response2["Set-Cookie"].should.equal(response1["Set-Cookie"])
|
81
|
+
end
|
49
82
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'test/spec'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'rack/handler/thin'
|
5
|
+
require 'testrequest'
|
6
|
+
require 'timeout'
|
7
|
+
|
8
|
+
context "Rack::Handler::Thin" do
|
9
|
+
include TestRequest::Helpers
|
10
|
+
|
11
|
+
setup do
|
12
|
+
@app = Rack::Lint.new(TestRequest.new)
|
13
|
+
Thin::Logging.silent = true
|
14
|
+
@thread = Thread.new do
|
15
|
+
Rack::Handler::Thin.run(@app, :Host => @host='0.0.0.0', :Port => @port=9201) do |server|
|
16
|
+
@server = server
|
17
|
+
end
|
18
|
+
end
|
19
|
+
Thread.pass until @server && @server.running?
|
20
|
+
end
|
21
|
+
|
22
|
+
specify "should respond" do
|
23
|
+
lambda {
|
24
|
+
GET("/")
|
25
|
+
}.should.not.raise
|
26
|
+
end
|
27
|
+
|
28
|
+
specify "should be a Thin" do
|
29
|
+
GET("/")
|
30
|
+
status.should.be 200
|
31
|
+
response["SERVER_SOFTWARE"].should =~ /thin/
|
32
|
+
response["HTTP_VERSION"].should.equal "HTTP/1.1"
|
33
|
+
response["SERVER_PROTOCOL"].should.equal "HTTP/1.1"
|
34
|
+
response["SERVER_PORT"].should.equal "9201"
|
35
|
+
response["SERVER_NAME"].should.equal "0.0.0.0"
|
36
|
+
end
|
37
|
+
|
38
|
+
specify "should have rack headers" do
|
39
|
+
GET("/")
|
40
|
+
response["rack.version"].should.equal [0,3]
|
41
|
+
response["rack.multithread"].should.be false
|
42
|
+
response["rack.multiprocess"].should.be false
|
43
|
+
response["rack.run_once"].should.be false
|
44
|
+
end
|
45
|
+
|
46
|
+
specify "should have CGI headers on GET" do
|
47
|
+
GET("/")
|
48
|
+
response["REQUEST_METHOD"].should.equal "GET"
|
49
|
+
response["REQUEST_PATH"].should.equal "/"
|
50
|
+
response["PATH_INFO"].should.be.equal "/"
|
51
|
+
response["QUERY_STRING"].should.equal ""
|
52
|
+
response["test.postdata"].should.equal ""
|
53
|
+
|
54
|
+
GET("/test/foo?quux=1")
|
55
|
+
response["REQUEST_METHOD"].should.equal "GET"
|
56
|
+
response["REQUEST_PATH"].should.equal "/test/foo"
|
57
|
+
response["PATH_INFO"].should.equal "/test/foo"
|
58
|
+
response["QUERY_STRING"].should.equal "quux=1"
|
59
|
+
end
|
60
|
+
|
61
|
+
specify "should have CGI headers on POST" do
|
62
|
+
POST("/", {"rack-form-data" => "23"}, {'X-test-header' => '42'})
|
63
|
+
status.should.equal 200
|
64
|
+
response["REQUEST_METHOD"].should.equal "POST"
|
65
|
+
response["REQUEST_PATH"].should.equal "/"
|
66
|
+
response["QUERY_STRING"].should.equal ""
|
67
|
+
response["HTTP_X_TEST_HEADER"].should.equal "42"
|
68
|
+
response["test.postdata"].should.equal "rack-form-data=23"
|
69
|
+
end
|
70
|
+
|
71
|
+
specify "should support HTTP auth" do
|
72
|
+
GET("/test", {:user => "ruth", :passwd => "secret"})
|
73
|
+
response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ="
|
74
|
+
end
|
75
|
+
|
76
|
+
specify "should set status" do
|
77
|
+
GET("/test?secret")
|
78
|
+
status.should.equal 403
|
79
|
+
response["rack.url_scheme"].should.equal "http"
|
80
|
+
end
|
81
|
+
|
82
|
+
teardown do
|
83
|
+
@server.stop!
|
84
|
+
@thread.kill
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
rescue LoadError
|
89
|
+
$stderr.puts "Skipping Rack::Handler::Thin tests (Thin is required). `gem install thin` and try again."
|
90
|
+
end
|
data/test/spec_rack_utils.rb
CHANGED
@@ -65,28 +65,30 @@ context "Rack::Utils" do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
context "Rack::Utils::HeaderHash" do
|
68
|
-
specify "should
|
69
|
-
h = Rack::Utils::HeaderHash.new("
|
70
|
-
h[
|
71
|
-
h
|
72
|
-
|
73
|
-
|
74
|
-
h.to_hash.should.equal "Foo" => "bar"
|
75
|
-
|
76
|
-
h["bar-zzle"] = "quux"
|
68
|
+
specify "should retain header case" do
|
69
|
+
h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...")
|
70
|
+
h['ETag'] = 'Boo!'
|
71
|
+
h.to_hash.should.equal "Content-MD5" => "d5ff4e2a0 ...", "ETag" => 'Boo!'
|
72
|
+
end
|
77
73
|
|
78
|
-
|
74
|
+
specify "should check existence of keys case insensitively" do
|
75
|
+
h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...")
|
76
|
+
h.should.include 'content-md5'
|
77
|
+
h.should.not.include 'ETag'
|
79
78
|
end
|
80
79
|
|
81
|
-
specify "should
|
82
|
-
h = Rack::Utils::HeaderHash.new
|
80
|
+
specify "should merge case-insensitively" do
|
81
|
+
h = Rack::Utils::HeaderHash.new("ETag" => 'HELLO', "content-length" => '123')
|
82
|
+
merged = h.merge("Etag" => 'WORLD', 'Content-Length' => '321', "Foo" => 'BAR')
|
83
|
+
merged.should.equal "Etag"=>'WORLD', "Content-Length"=>'321', "Foo"=>'BAR'
|
84
|
+
end
|
83
85
|
|
84
|
-
|
85
|
-
h.
|
86
|
-
h
|
87
|
-
h
|
88
|
-
h.
|
89
|
-
h.
|
86
|
+
specify "should overwrite case insensitively and assume the new key's case" do
|
87
|
+
h = Rack::Utils::HeaderHash.new("Foo-Bar" => "baz")
|
88
|
+
h["foo-bar"] = "bizzle"
|
89
|
+
h["FOO-BAR"].should.equal "bizzle"
|
90
|
+
h.length.should.equal 1
|
91
|
+
h.to_hash.should.equal "foo-bar" => "bizzle"
|
90
92
|
end
|
91
93
|
|
92
94
|
specify "should be converted to real Hash" do
|
data/test/spec_rack_webrick.rb
CHANGED
@@ -2,6 +2,7 @@ require 'test/spec'
|
|
2
2
|
|
3
3
|
require 'rack/handler/webrick'
|
4
4
|
require 'rack/lint'
|
5
|
+
require 'rack/response'
|
5
6
|
require 'testrequest'
|
6
7
|
|
7
8
|
Thread.abort_on_exception = true
|
@@ -83,6 +84,22 @@ context "Rack::Handler::WEBrick" do
|
|
83
84
|
response["rack.url_scheme"].should.equal "http"
|
84
85
|
end
|
85
86
|
|
87
|
+
specify "should correctly set cookies" do
|
88
|
+
@server.mount "/cookie-test", Rack::Handler::WEBrick,
|
89
|
+
Rack::Lint.new(lambda { |req|
|
90
|
+
res = Rack::Response.new
|
91
|
+
res.set_cookie "one", "1"
|
92
|
+
res.set_cookie "two", "2"
|
93
|
+
res.finish
|
94
|
+
})
|
95
|
+
|
96
|
+
Net::HTTP.start(@host, @port) { |http|
|
97
|
+
res = http.get("/cookie-test")
|
98
|
+
res.code.to_i.should.equal 200
|
99
|
+
res.get_fields("set-cookie").should.equal ["one=1", "two=2"]
|
100
|
+
}
|
101
|
+
end
|
102
|
+
|
86
103
|
specify "should provide a .run" do
|
87
104
|
block_ran = false
|
88
105
|
catch(:done) {
|
data/test/testrequest.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Neukirchen
|
@@ -9,10 +9,79 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-01-06 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: test-spec
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: camping
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: fcgi
|
37
|
+
type: :development
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0"
|
44
|
+
version:
|
45
|
+
- !ruby/object:Gem::Dependency
|
46
|
+
name: memcache-client
|
47
|
+
type: :development
|
48
|
+
version_requirement:
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: "0"
|
54
|
+
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: mongrel
|
57
|
+
type: :development
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: ruby-openid
|
67
|
+
type: :development
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 2.0.0
|
74
|
+
version:
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: thin
|
77
|
+
type: :development
|
78
|
+
version_requirement:
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: "0"
|
84
|
+
version:
|
16
85
|
description: Rack provides minimal, modular and adaptable interface for developing web applications in Ruby. By wrapping HTTP requests and responses in the simplest way possible, it unifies and distills the API for web servers, web frameworks, and software in between (the so-called middleware) into a single method call. Also see http://rack.rubyforge.org.
|
17
86
|
email: chneukirchen@gmail.com
|
18
87
|
executables:
|
@@ -48,6 +117,8 @@ files:
|
|
48
117
|
- lib/rack/builder.rb
|
49
118
|
- lib/rack/cascade.rb
|
50
119
|
- lib/rack/commonlogger.rb
|
120
|
+
- lib/rack/conditionalget.rb
|
121
|
+
- lib/rack/content_length.rb
|
51
122
|
- lib/rack/deflater.rb
|
52
123
|
- lib/rack/directory.rb
|
53
124
|
- lib/rack/file.rb
|
@@ -58,9 +129,14 @@ files:
|
|
58
129
|
- lib/rack/handler/lsws.rb
|
59
130
|
- lib/rack/handler/mongrel.rb
|
60
131
|
- lib/rack/handler/scgi.rb
|
132
|
+
- lib/rack/handler/swiftiplied_mongrel.rb
|
133
|
+
- lib/rack/handler/thin.rb
|
61
134
|
- lib/rack/handler/webrick.rb
|
135
|
+
- lib/rack/head.rb
|
62
136
|
- lib/rack/lint.rb
|
63
137
|
- lib/rack/lobster.rb
|
138
|
+
- lib/rack/methodoverride.rb
|
139
|
+
- lib/rack/mime.rb
|
64
140
|
- lib/rack/mock.rb
|
65
141
|
- lib/rack/recursive.rb
|
66
142
|
- lib/rack/reloader.rb
|
@@ -87,13 +163,17 @@ files:
|
|
87
163
|
- test/spec_rack_cascade.rb
|
88
164
|
- test/spec_rack_cgi.rb
|
89
165
|
- test/spec_rack_commonlogger.rb
|
166
|
+
- test/spec_rack_conditionalget.rb
|
167
|
+
- test/spec_rack_content_length.rb
|
90
168
|
- test/spec_rack_deflater.rb
|
91
169
|
- test/spec_rack_directory.rb
|
92
170
|
- test/spec_rack_fastcgi.rb
|
93
171
|
- test/spec_rack_file.rb
|
94
172
|
- test/spec_rack_handler.rb
|
173
|
+
- test/spec_rack_head.rb
|
95
174
|
- test/spec_rack_lint.rb
|
96
175
|
- test/spec_rack_lobster.rb
|
176
|
+
- test/spec_rack_methodoverride.rb
|
97
177
|
- test/spec_rack_mock.rb
|
98
178
|
- test/spec_rack_mongrel.rb
|
99
179
|
- test/spec_rack_recursive.rb
|
@@ -105,6 +185,7 @@ files:
|
|
105
185
|
- test/spec_rack_showexceptions.rb
|
106
186
|
- test/spec_rack_showstatus.rb
|
107
187
|
- test/spec_rack_static.rb
|
188
|
+
- test/spec_rack_thin.rb
|
108
189
|
- test/spec_rack_urlmap.rb
|
109
190
|
- test/spec_rack_utils.rb
|
110
191
|
- test/spec_rack_webrick.rb
|
@@ -133,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
214
|
requirements: []
|
134
215
|
|
135
216
|
rubyforge_project: rack
|
136
|
-
rubygems_version: 1.
|
217
|
+
rubygems_version: 1.3.1
|
137
218
|
signing_key:
|
138
219
|
specification_version: 2
|
139
220
|
summary: a modular Ruby webserver interface
|
@@ -146,13 +227,17 @@ test_files:
|
|
146
227
|
- test/spec_rack_cascade.rb
|
147
228
|
- test/spec_rack_cgi.rb
|
148
229
|
- test/spec_rack_commonlogger.rb
|
230
|
+
- test/spec_rack_conditionalget.rb
|
231
|
+
- test/spec_rack_content_length.rb
|
149
232
|
- test/spec_rack_deflater.rb
|
150
233
|
- test/spec_rack_directory.rb
|
151
234
|
- test/spec_rack_fastcgi.rb
|
152
235
|
- test/spec_rack_file.rb
|
153
236
|
- test/spec_rack_handler.rb
|
237
|
+
- test/spec_rack_head.rb
|
154
238
|
- test/spec_rack_lint.rb
|
155
239
|
- test/spec_rack_lobster.rb
|
240
|
+
- test/spec_rack_methodoverride.rb
|
156
241
|
- test/spec_rack_mock.rb
|
157
242
|
- test/spec_rack_mongrel.rb
|
158
243
|
- test/spec_rack_recursive.rb
|
@@ -164,6 +249,7 @@ test_files:
|
|
164
249
|
- test/spec_rack_showexceptions.rb
|
165
250
|
- test/spec_rack_showstatus.rb
|
166
251
|
- test/spec_rack_static.rb
|
252
|
+
- test/spec_rack_thin.rb
|
167
253
|
- test/spec_rack_urlmap.rb
|
168
254
|
- test/spec_rack_utils.rb
|
169
255
|
- test/spec_rack_webrick.rb
|