rack-contrib 0.9.2 → 1.0.0

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

Potentially problematic release.


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

@@ -0,0 +1,50 @@
1
+ require 'test/spec'
2
+ require 'rack/mock'
3
+ require 'rack/contrib/host_meta'
4
+ require 'rack/contrib/not_found'
5
+
6
+ context "Rack::HostMeta" do
7
+
8
+ setup do
9
+ app = Rack::Builder.new do
10
+ use Rack::Lint
11
+ use Rack::ContentLength
12
+ use Rack::HostMeta do
13
+ link :uri => '/robots.txt', :rel => 'robots'
14
+ link :uri => '/w3c/p3p.xml', :rel => 'privacy', :type => 'application/p3p.xml'
15
+ link :pattern => '{uri};json_schema', :rel => 'describedby', :type => 'application/x-schema+json'
16
+ end
17
+ run Rack::NotFound.new('test/404.html')
18
+ end
19
+ @response = Rack::MockRequest.new(app).get('/host-meta')
20
+ end
21
+
22
+ specify "should respond to /host-meta" do
23
+ @response.status.should.equal 200
24
+ end
25
+
26
+ specify "should respond with the correct media type" do
27
+ @response['Content-Type'].should.equal 'application/host-meta'
28
+ end
29
+
30
+ specify "should include a Link entry for each Link item in the config block" do
31
+ @response.body.should.match(/Link:\s*<\/robots.txt>;.*\n/)
32
+ @response.body.should.match(/Link:\s*<\/w3c\/p3p.xml>;.*/)
33
+ end
34
+
35
+ specify "should include a Link-Pattern entry for each Link-Pattern item in the config" do
36
+ @response.body.should.match(/Link-Pattern:\s*<\{uri\};json_schema>;.*/)
37
+ end
38
+
39
+ specify "should include a rel attribute for each Link or Link-Pattern entry where specified" do
40
+ @response.body.should.match(/rel="robots"/)
41
+ @response.body.should.match(/rel="privacy"/)
42
+ @response.body.should.match(/rel="describedby"/)
43
+ end
44
+
45
+ specify "should include a type attribute for each Link or Link-Pattern entry where specified" do
46
+ @response.body.should.match(/Link:\s*<\/w3c\/p3p.xml>;.*type.*application\/p3p.xml/)
47
+ @response.body.should.match(/Link-Pattern:\s*<\{uri\};json_schema>;.*type.*application\/x-schema\+json/)
48
+ end
49
+
50
+ end
@@ -9,24 +9,24 @@ context "Rack::JSONP" do
9
9
  test_body = '{"bar":"foo"}'
10
10
  callback = 'foo'
11
11
  app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, [test_body]] }
12
- request = Rack::MockRequest.env_for("/", :input => "foo=bar&callback=#{callback}")
12
+ request = Rack::MockRequest.env_for("/", :params => "foo=bar&callback=#{callback}")
13
13
  body = Rack::JSONP.new(app).call(request).last
14
- body.join.should.equal "#{callback}(#{test_body})"
14
+ body.should.equal "#{callback}(#{test_body})"
15
15
  end
16
16
 
17
17
  specify "should modify the content length to the correct value" do
18
18
  test_body = '{"bar":"foo"}'
19
19
  callback = 'foo'
20
20
  app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, [test_body]] }
21
- request = Rack::MockRequest.env_for("/", :input => "foo=bar&callback=#{callback}")
21
+ request = Rack::MockRequest.env_for("/", :params => "foo=bar&callback=#{callback}")
22
22
  headers = Rack::JSONP.new(app).call(request)[1]
23
23
  headers['Content-Length'].should.equal((test_body.length + callback.length + 2).to_s) # 2 parentheses
24
24
  end
25
25
  end
26
26
 
27
27
  specify "should not change anything if no callback param is provided" do
28
- app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, '{"bar":"foo"}'] }
29
- request = Rack::MockRequest.env_for("/", :input => "foo=bar")
28
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['{"bar":"foo"}']] }
29
+ request = Rack::MockRequest.env_for("/", :params => "foo=bar")
30
30
  body = Rack::JSONP.new(app).call(request).last
31
31
  body.join.should.equal '{"bar":"foo"}'
32
32
  end
@@ -16,7 +16,7 @@ begin
16
16
 
17
17
  specify "should change nothing when the POST body content type isn't application/json" do
18
18
  app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, Rack::Request.new(env).POST] }
19
- body = app.call(Rack::MockRequest.env_for("/", :input => "body=asdf&status=12")).last
19
+ body = Rack::PostBodyContentTypeParser.new(app).call(Rack::MockRequest.env_for("/", {:method => 'POST', :params => "body=asdf&status=12"})).last
20
20
  body['body'].should.equal "asdf"
21
21
  body['status'].should.equal "12"
22
22
  end
@@ -6,7 +6,7 @@ begin
6
6
 
7
7
  context 'Rack::Profiler' do
8
8
  app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, 'Oh hai der'] }
9
- request = Rack::MockRequest.env_for("/", :input => "profile=process_time")
9
+ request = Rack::MockRequest.env_for("/", :params => "profile=process_time")
10
10
 
11
11
  specify 'printer defaults to RubyProf::CallTreePrinter' do
12
12
  profiler = Rack::Profiler.new(nil)
@@ -0,0 +1,35 @@
1
+ require 'test/spec'
2
+ require 'rack'
3
+ require 'rack/contrib/response_headers'
4
+
5
+ context "Rack::ResponseHeaders" do
6
+
7
+ specify "yields a HeaderHash of response headers" do
8
+ orig_headers = {'X-Foo' => 'foo', 'X-Bar' => 'bar'}
9
+ app = Proc.new {[200, orig_headers, []]}
10
+ middleware = Rack::ResponseHeaders.new(app) do |headers|
11
+ assert_instance_of Rack::Utils::HeaderHash, headers
12
+ orig_headers.should == headers
13
+ end
14
+ middleware.call({})
15
+ end
16
+
17
+ specify "allows adding headers" do
18
+ app = Proc.new {[200, {'X-Foo' => 'foo'}, []]}
19
+ middleware = Rack::ResponseHeaders.new(app) do |headers|
20
+ headers['X-Bar'] = 'bar'
21
+ end
22
+ r = middleware.call({})
23
+ r[1].should == {'X-Foo' => 'foo', 'X-Bar' => 'bar'}
24
+ end
25
+
26
+ specify "allows deleting headers" do
27
+ app = Proc.new {[200, {'X-Foo' => 'foo', 'X-Bar' => 'bar'}, []]}
28
+ middleware = Rack::ResponseHeaders.new(app) do |headers|
29
+ headers.delete('X-Bar')
30
+ end
31
+ r = middleware.call({})
32
+ r[1].should == {'X-Foo' => 'foo'}
33
+ end
34
+
35
+ end
@@ -0,0 +1,35 @@
1
+ require 'test/spec'
2
+ require 'rack/mock'
3
+ require 'rack/contrib/runtime'
4
+
5
+ context "Rack::Runtime" do
6
+ specify "sets X-Runtime is none is set" do
7
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
8
+ response = Rack::Runtime.new(app).call({})
9
+ response[1]['X-Runtime'].should =~ /[\d\.]+/
10
+ end
11
+
12
+ specify "does not set the X-Runtime if it is already set" do
13
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain', "X-Runtime" => "foobar"}, "Hello, World!"] }
14
+ response = Rack::Runtime.new(app).call({})
15
+ response[1]['X-Runtime'].should == "foobar"
16
+ end
17
+
18
+ specify "should allow a suffix to be set" do
19
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
20
+ response = Rack::Runtime.new(app, "Test").call({})
21
+ response[1]['X-Runtime-Test'].should =~ /[\d\.]+/
22
+ end
23
+
24
+ specify "should allow multiple timers to be set" do
25
+ app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] }
26
+ runtime1 = Rack::Runtime.new(app, "App")
27
+ runtime2 = Rack::Runtime.new(runtime1, "All")
28
+ response = runtime2.call({})
29
+
30
+ response[1]['X-Runtime-App'].should =~ /[\d\.]+/
31
+ response[1]['X-Runtime-All'].should =~ /[\d\.]+/
32
+
33
+ Float(response[1]['X-Runtime-All']).should > Float(response[1]['X-Runtime-App'])
34
+ end
35
+ end
@@ -0,0 +1,95 @@
1
+ require 'test/spec'
2
+ require 'rack'
3
+ require 'rack/contrib/simple_endpoint'
4
+
5
+ context "Rack::SimpleEndpoint" do
6
+ setup do
7
+ @app = Proc.new { Rack::Response.new {|r| r.write "Downstream app"}.finish }
8
+ end
9
+
10
+ specify "calls downstream app when no match" do
11
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo') { 'bar' }
12
+ status, headers, body = endpoint.call(Rack::MockRequest.env_for('/baz'))
13
+ status.should == 200
14
+ body.body.should == ['Downstream app']
15
+ end
16
+
17
+ specify "calls downstream app when path matches but method does not" do
18
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo' => :get) { 'bar' }
19
+ status, headers, body = endpoint.call(Rack::MockRequest.env_for('/foo', :method => 'post'))
20
+ status.should == 200
21
+ body.body.should == ['Downstream app']
22
+ end
23
+
24
+ specify "calls downstream app when path matches but block returns :pass" do
25
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo') { :pass }
26
+ status, headers, body = endpoint.call(Rack::MockRequest.env_for('/foo'))
27
+ status.should == 200
28
+ body.body.should == ['Downstream app']
29
+ end
30
+
31
+ specify "returns endpoint response when path matches" do
32
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo') { 'bar' }
33
+ status, headers, body = endpoint.call(Rack::MockRequest.env_for('/foo'))
34
+ status.should == 200
35
+ body.body.should == ['bar']
36
+ end
37
+
38
+ specify "returns endpoint response when path and single method requirement match" do
39
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo' => :get) { 'bar' }
40
+ status, headers, body = endpoint.call(Rack::MockRequest.env_for('/foo'))
41
+ status.should == 200
42
+ body.body.should == ['bar']
43
+ end
44
+
45
+ specify "returns endpoint response when path and one of multiple method requirements match" do
46
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo' => [:get, :post]) { 'bar' }
47
+ status, headers, body = endpoint.call(Rack::MockRequest.env_for('/foo', :method => 'post'))
48
+ status.should == 200
49
+ body.body.should == ['bar']
50
+ end
51
+
52
+ specify "returns endpoint response when path matches regex" do
53
+ endpoint = Rack::SimpleEndpoint.new(@app, /foo/) { 'bar' }
54
+ status, headers, body = endpoint.call(Rack::MockRequest.env_for('/bar/foo'))
55
+ status.should == 200
56
+ body.body.should == ['bar']
57
+ end
58
+
59
+ specify "block yields Rack::Request and Rack::Response objects" do
60
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo') do |req, res|
61
+ assert_instance_of ::Rack::Request, req
62
+ assert_instance_of ::Rack::Response, res
63
+ end
64
+ endpoint.call(Rack::MockRequest.env_for('/foo'))
65
+ end
66
+
67
+ specify "block yields MatchData object when Regex path matcher specified" do
68
+ endpoint = Rack::SimpleEndpoint.new(@app, /foo(.+)/) do |req, res, match|
69
+ assert_instance_of MatchData, match
70
+ assert_equal 'bar', match[1]
71
+ end
72
+ endpoint.call(Rack::MockRequest.env_for('/foobar'))
73
+ end
74
+
75
+ specify "block does NOT yield MatchData object when String path matcher specified" do
76
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo') do |req, res, match|
77
+ assert_nil match
78
+ end
79
+ endpoint.call(Rack::MockRequest.env_for('/foo'))
80
+ end
81
+
82
+ specify "response honors headers set in block" do
83
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo') {|req, res| res['X-Foo'] = 'bar'; 'baz' }
84
+ status, headers, body = endpoint.call(Rack::MockRequest.env_for('/foo'))
85
+ status.should == 200
86
+ headers['X-Foo'].should == 'bar'
87
+ body.body.should == ['baz']
88
+ end
89
+
90
+ specify "sets Content-Length header" do
91
+ endpoint = Rack::SimpleEndpoint.new(@app, '/foo') {|req, res| 'bar' }
92
+ status, headers, body = endpoint.call(Rack::MockRequest.env_for('/foo'))
93
+ headers['Content-Length'].should == '3'
94
+ end
95
+ end
@@ -0,0 +1,91 @@
1
+ require 'test/spec'
2
+
3
+ require 'rack'
4
+ require 'rack/contrib/static_cache'
5
+ require 'rack/mock'
6
+
7
+ class DummyApp
8
+ def call(env)
9
+ [200, {}, ["Hello World"]]
10
+ end
11
+ end
12
+
13
+ describe "Rack::StaticCache" do
14
+
15
+ setup do
16
+ @root = ::File.expand_path(::File.dirname(__FILE__))
17
+ end
18
+
19
+ it "should serve files with required headers" do
20
+ default_app_request
21
+ res = @request.get("/statics/test")
22
+ res.should.be.ok
23
+ res.body.should =~ /rubyrack/
24
+ res.headers['Cache-Control'].should == 'max-age=31536000, public'
25
+ next_year = Time.now().year + 1
26
+ res.headers['Expires'].should =~ Regexp.new(
27
+ "[A-Z][a-z]{2}[,][\s][0-9]{2}[\s][A-Z][a-z]{2}[\s]" << "#{next_year}" <<
28
+ "[\s][0-9]{2}[:][0-9]{2}[:][0-9]{2} GMT$")
29
+ res.headers.has_key?('Etag').should == false
30
+ res.headers.has_key?('Pragma').should == false
31
+ res.headers.has_key?('Last-Modified').should == false
32
+ end
33
+
34
+ it "should return 404s if url root is known but it can't find the file" do
35
+ default_app_request
36
+ res = @request.get("/statics/foo")
37
+ res.should.be.not_found
38
+ end
39
+
40
+ it "should call down the chain if url root is not known" do
41
+ default_app_request
42
+ res = @request.get("/something/else")
43
+ res.should.be.ok
44
+ res.body.should == "Hello World"
45
+ end
46
+
47
+ it "should serve files if requested with version number and versioning is enabled" do
48
+ default_app_request
49
+ res = @request.get("/statics/test-0.0.1")
50
+ res.should.be.ok
51
+ end
52
+
53
+ it "should change cache duration if specified thorugh option" do
54
+ configured_app_request
55
+ res = @request.get("/statics/test")
56
+ res.should.be.ok
57
+ res.body.should =~ /rubyrack/
58
+ next_next_year = Time.now().year + 2
59
+ res.headers['Expires'].should =~ Regexp.new("#{next_next_year}")
60
+ end
61
+
62
+ it "should return 404s if requested with version number but versioning is disabled" do
63
+ configured_app_request
64
+ res = @request.get("/statics/test-0.0.1")
65
+ res.should.be.not_found
66
+ end
67
+
68
+ it "should serve files with plain headers when * is added to the directory name" do
69
+ configured_app_request
70
+ res = @request.get("/documents/test")
71
+ res.should.be.ok
72
+ res.body.should =~ /nocache/
73
+ next_next_year = Time.now().year + 2
74
+ res.headers['Expires'].should.not =~ Regexp.new("#{next_next_year}")
75
+ end
76
+
77
+ def default_app_request
78
+ @options = {:urls => ["/statics"], :root => @root}
79
+ request
80
+ end
81
+
82
+ def configured_app_request
83
+ @options = {:urls => ["/statics", "/documents*"], :root => @root, :versioning => false, :duration => 2}
84
+ request
85
+ end
86
+
87
+ def request
88
+ @request = Rack::MockRequest.new(Rack::StaticCache.new(DummyApp.new, @options))
89
+ end
90
+
91
+ end
@@ -0,0 +1 @@
1
+ rubyrack
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-contrib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 0
9
+ version: 1.0.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - rack-devel
@@ -9,49 +14,63 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-03-07 00:00:00 -08:00
17
+ date: 2010-06-07 00:00:00 -07:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: rack
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 9
30
+ - 1
23
31
  version: 0.9.1
24
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: test-spec
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
- - - ~>
39
+ - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 9
44
+ - 0
33
45
  version: 0.9.0
34
- version:
46
+ type: :development
47
+ version_requirements: *id002
35
48
  - !ruby/object:Gem::Dependency
36
49
  name: tmail
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
40
52
  requirements:
41
53
  - - ">="
42
54
  - !ruby/object:Gem::Version
55
+ segments:
56
+ - 1
57
+ - 2
43
58
  version: "1.2"
44
- version:
59
+ type: :development
60
+ version_requirements: *id003
45
61
  - !ruby/object:Gem::Dependency
46
62
  name: json
47
- type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
63
+ prerelease: false
64
+ requirement: &id004 !ruby/object:Gem::Requirement
50
65
  requirements:
51
66
  - - ">="
52
67
  - !ruby/object:Gem::Version
68
+ segments:
69
+ - 1
70
+ - 1
53
71
  version: "1.1"
54
- version:
72
+ type: :development
73
+ version_requirements: *id004
55
74
  description: Contributed Rack Middleware and Utilities
56
75
  email: rack-devel@googlegroups.com
57
76
  executables: []
@@ -62,20 +81,24 @@ extra_rdoc_files:
62
81
  - README.rdoc
63
82
  - COPYING
64
83
  files:
84
+ - AUTHORS
65
85
  - COPYING
66
86
  - README.rdoc
67
87
  - Rakefile
68
88
  - lib/rack/contrib.rb
69
89
  - lib/rack/contrib/accept_format.rb
90
+ - lib/rack/contrib/access.rb
70
91
  - lib/rack/contrib/backstage.rb
71
92
  - lib/rack/contrib/bounce_favicon.rb
72
93
  - lib/rack/contrib/callbacks.rb
73
94
  - lib/rack/contrib/config.rb
95
+ - lib/rack/contrib/cookies.rb
74
96
  - lib/rack/contrib/csshttprequest.rb
75
97
  - lib/rack/contrib/deflect.rb
76
- - lib/rack/contrib/etag.rb
77
98
  - lib/rack/contrib/evil.rb
99
+ - lib/rack/contrib/expectation_cascade.rb
78
100
  - lib/rack/contrib/garbagecollector.rb
101
+ - lib/rack/contrib/host_meta.rb
79
102
  - lib/rack/contrib/jsonp.rb
80
103
  - lib/rack/contrib/lighttpd_script_name_fix.rb
81
104
  - lib/rack/contrib/locale.rb
@@ -87,24 +110,32 @@ files:
87
110
  - lib/rack/contrib/profiler.rb
88
111
  - lib/rack/contrib/relative_redirect.rb
89
112
  - lib/rack/contrib/response_cache.rb
113
+ - lib/rack/contrib/response_headers.rb
90
114
  - lib/rack/contrib/route_exceptions.rb
115
+ - lib/rack/contrib/runtime.rb
91
116
  - lib/rack/contrib/sendfile.rb
92
117
  - lib/rack/contrib/signals.rb
118
+ - lib/rack/contrib/simple_endpoint.rb
119
+ - lib/rack/contrib/static_cache.rb
93
120
  - lib/rack/contrib/time_zone.rb
94
121
  - rack-contrib.gemspec
95
122
  - test/404.html
96
123
  - test/Maintenance.html
124
+ - test/documents/test
97
125
  - test/mail_settings.rb
98
126
  - test/spec_rack_accept_format.rb
127
+ - test/spec_rack_access.rb
99
128
  - test/spec_rack_backstage.rb
100
129
  - test/spec_rack_callbacks.rb
101
130
  - test/spec_rack_config.rb
102
131
  - test/spec_rack_contrib.rb
132
+ - test/spec_rack_cookies.rb
103
133
  - test/spec_rack_csshttprequest.rb
104
134
  - test/spec_rack_deflect.rb
105
- - test/spec_rack_etag.rb
106
135
  - test/spec_rack_evil.rb
136
+ - test/spec_rack_expectation_cascade.rb
107
137
  - test/spec_rack_garbagecollector.rb
138
+ - test/spec_rack_host_meta.rb
108
139
  - test/spec_rack_jsonp.rb
109
140
  - test/spec_rack_lighttpd_script_name_fix.rb
110
141
  - test/spec_rack_mailexceptions.rb
@@ -115,9 +146,16 @@ files:
115
146
  - test/spec_rack_profiler.rb
116
147
  - test/spec_rack_relative_redirect.rb
117
148
  - test/spec_rack_response_cache.rb
149
+ - test/spec_rack_response_headers.rb
150
+ - test/spec_rack_runtime.rb
118
151
  - test/spec_rack_sendfile.rb
152
+ - test/spec_rack_simple_endpoint.rb
153
+ - test/spec_rack_static_cache.rb
154
+ - test/statics/test
119
155
  has_rdoc: true
120
156
  homepage: http://github.com/rack/rack-contrib/
157
+ licenses: []
158
+
121
159
  post_install_message:
122
160
  rdoc_options:
123
161
  - --line-numbers
@@ -132,32 +170,37 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
170
  requirements:
133
171
  - - ">="
134
172
  - !ruby/object:Gem::Version
173
+ segments:
174
+ - 0
135
175
  version: "0"
136
- version:
137
176
  required_rubygems_version: !ruby/object:Gem::Requirement
138
177
  requirements:
139
178
  - - ">="
140
179
  - !ruby/object:Gem::Version
180
+ segments:
181
+ - 0
141
182
  version: "0"
142
- version:
143
183
  requirements: []
144
184
 
145
185
  rubyforge_project:
146
- rubygems_version: 1.3.1
186
+ rubygems_version: 1.3.6
147
187
  signing_key:
148
188
  specification_version: 2
149
189
  summary: Contributed Rack Middleware and Utilities
150
190
  test_files:
151
191
  - test/spec_rack_accept_format.rb
192
+ - test/spec_rack_access.rb
152
193
  - test/spec_rack_backstage.rb
153
194
  - test/spec_rack_callbacks.rb
154
195
  - test/spec_rack_config.rb
155
196
  - test/spec_rack_contrib.rb
197
+ - test/spec_rack_cookies.rb
156
198
  - test/spec_rack_csshttprequest.rb
157
199
  - test/spec_rack_deflect.rb
158
- - test/spec_rack_etag.rb
159
200
  - test/spec_rack_evil.rb
201
+ - test/spec_rack_expectation_cascade.rb
160
202
  - test/spec_rack_garbagecollector.rb
203
+ - test/spec_rack_host_meta.rb
161
204
  - test/spec_rack_jsonp.rb
162
205
  - test/spec_rack_lighttpd_script_name_fix.rb
163
206
  - test/spec_rack_mailexceptions.rb
@@ -168,4 +211,8 @@ test_files:
168
211
  - test/spec_rack_profiler.rb
169
212
  - test/spec_rack_relative_redirect.rb
170
213
  - test/spec_rack_response_cache.rb
214
+ - test/spec_rack_response_headers.rb
215
+ - test/spec_rack_runtime.rb
171
216
  - test/spec_rack_sendfile.rb
217
+ - test/spec_rack_simple_endpoint.rb
218
+ - test/spec_rack_static_cache.rb