aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2009-05-02 15:29:18 -0500
committerJoshua Peek <josh@joshpeek.com>2009-05-02 15:29:18 -0500
commitf32cf44870549c6cc5b6e6c84cffc1facf6ec38e (patch)
tree320e7398d1e6e4f3f372cd2ee90d1e2560459f10 /actionpack/lib
parenta8b75c480fc9774252f5976dcf1a614079822e56 (diff)
downloadrails-f32cf44870549c6cc5b6e6c84cffc1facf6ec38e.tar.gz
rails-f32cf44870549c6cc5b6e6c84cffc1facf6ec38e.tar.bz2
rails-f32cf44870549c6cc5b6e6c84cffc1facf6ec38e.zip
Switch functional tests to run through the rack interface instead of process
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_controller/base/base.rb12
-rw-r--r--actionpack/lib/action_controller/dispatch/dispatcher.rb2
-rw-r--r--actionpack/lib/action_controller/dispatch/rescue.rb2
-rw-r--r--actionpack/lib/action_controller/routing/route_set.rb2
-rw-r--r--actionpack/lib/action_controller/testing/process.rb13
-rw-r--r--actionpack/lib/action_dispatch/testing/test_request.rb5
6 files changed, 27 insertions, 9 deletions
diff --git a/actionpack/lib/action_controller/base/base.rb b/actionpack/lib/action_controller/base/base.rb
index ef97986c0e..eb65f59ddd 100644
--- a/actionpack/lib/action_controller/base/base.rb
+++ b/actionpack/lib/action_controller/base/base.rb
@@ -371,10 +371,7 @@ module ActionController #:nodoc:
class << self
def call(env)
- # HACK: For global rescue to have access to the original request and response
- request = env["action_controller.rescue.request"] ||= ActionDispatch::Request.new(env)
- response = env["action_controller.rescue.response"] ||= ActionDispatch::Response.new
- process(request, response)
+ new.call(env)
end
# Factory for the standard create, process loop where the controller is discarded after processing.
@@ -511,6 +508,13 @@ module ActionController #:nodoc:
end
public
+ def call(env)
+ # HACK: For global rescue to have access to the original request and response
+ request = env["action_dispatch.rescue.request"] ||= ActionDispatch::Request.new(env)
+ response = env["action_dispatch.rescue.response"] ||= ActionDispatch::Response.new
+ process(request, response).to_a
+ end
+
# Extracts the action_name from the request parameters and performs that action.
def process(request, response, method = :perform_action, *arguments) #:nodoc:
response.request = request
diff --git a/actionpack/lib/action_controller/dispatch/dispatcher.rb b/actionpack/lib/action_controller/dispatch/dispatcher.rb
index bb9d8bd063..25844bf2a2 100644
--- a/actionpack/lib/action_controller/dispatch/dispatcher.rb
+++ b/actionpack/lib/action_controller/dispatch/dispatcher.rb
@@ -80,7 +80,7 @@ module ActionController
Routing::Routes.call(env)
rescue Exception => exception
if controller ||= (::ApplicationController rescue Base)
- controller.call_with_exception(env, exception).to_a
+ controller.call_with_exception(env, exception)
else
raise exception
end
diff --git a/actionpack/lib/action_controller/dispatch/rescue.rb b/actionpack/lib/action_controller/dispatch/rescue.rb
index df80ac0909..2f3b40c231 100644
--- a/actionpack/lib/action_controller/dispatch/rescue.rb
+++ b/actionpack/lib/action_controller/dispatch/rescue.rb
@@ -62,7 +62,7 @@ module ActionController #:nodoc:
def call_with_exception(env, exception) #:nodoc:
request = env["action_controller.rescue.request"] ||= ActionDispatch::Request.new(env)
response = env["action_controller.rescue.response"] ||= ActionDispatch::Response.new
- new.process(request, response, :rescue_action, exception)
+ new.process(request, response, :rescue_action, exception).to_a
end
end
diff --git a/actionpack/lib/action_controller/routing/route_set.rb b/actionpack/lib/action_controller/routing/route_set.rb
index 70cd1f642d..172b867bf0 100644
--- a/actionpack/lib/action_controller/routing/route_set.rb
+++ b/actionpack/lib/action_controller/routing/route_set.rb
@@ -430,7 +430,7 @@ module ActionController
def call(env)
request = ActionDispatch::Request.new(env)
app = Routing::Routes.recognize(request)
- app.call(env).to_a
+ app.call(env)
end
def recognize(request)
diff --git a/actionpack/lib/action_controller/testing/process.rb b/actionpack/lib/action_controller/testing/process.rb
index b44ec2f94b..49e8322491 100644
--- a/actionpack/lib/action_controller/testing/process.rb
+++ b/actionpack/lib/action_controller/testing/process.rb
@@ -35,12 +35,13 @@ module ActionController #:nodoc:
end
data = params.to_query
- @env['CONTENT_LENGTH'] = data.length
+ @env['CONTENT_LENGTH'] = data.length.to_s
@env['rack.input'] = StringIO.new(data)
end
def recycle!
@env.delete_if { |k, v| k =~ /^(action_dispatch|rack)\.request/ }
+ @env.delete_if { |k, v| k =~ /^action_dispatch\.rescue/ }
@env['action_dispatch.request.query_parameters'] = {}
end
end
@@ -132,7 +133,15 @@ module ActionController #:nodoc:
Base.class_eval { include ProcessWithTest } unless Base < ProcessWithTest
- response = Rack::MockResponse.new(*@controller.process(@request, ActionDispatch::Response.new).to_a)
+ env = @request.env
+ app = @controller
+
+ # TODO: Enable Lint
+ # app = Rack::Lint.new(app)
+
+ status, headers, body = app.call(env)
+ response = Rack::MockResponse.new(status, headers, body)
+
@response.request, @response.template = @request, @controller.template
@response.status, @response.headers, @response.body = response.status, response.headers, response.body
@response
diff --git a/actionpack/lib/action_dispatch/testing/test_request.rb b/actionpack/lib/action_dispatch/testing/test_request.rb
index 5d8cd7e619..20288aa7a5 100644
--- a/actionpack/lib/action_dispatch/testing/test_request.rb
+++ b/actionpack/lib/action_dispatch/testing/test_request.rb
@@ -16,6 +16,7 @@ module ActionDispatch
def env
write_cookies!
+ delete_nil_values!
super
end
@@ -74,5 +75,9 @@ module ActionDispatch
@env['HTTP_COOKIE'] = @cookies.map { |name, value| "#{name}=#{value};" }.join(' ')
end
end
+
+ def delete_nil_values!
+ @env.delete_if { |k, v| v.nil? }
+ end
end
end