aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Kemper <jeremykemper@gmail.com>2015-02-26 17:55:59 -0700
committerJeremy Kemper <jeremykemper@gmail.com>2015-02-26 18:03:40 -0700
commit714205988315d2f98aa3e749747c44470e18676b (patch)
tree876d1c8aa4b0172770a3a20ddab2981d14430c6e
parenta13e52b42279a003e57969dc827bdbee5fdbe967 (diff)
downloadrails-714205988315d2f98aa3e749747c44470e18676b.tar.gz
rails-714205988315d2f98aa3e749747c44470e18676b.tar.bz2
rails-714205988315d2f98aa3e749747c44470e18676b.zip
Revert integration test refactoring that caused app test regressions
Haven't diagnosed yet. No similarly failing tests in Rails to work from. cc @tenderlove, @eileencodes Revert "there is always an integration session, so remove the check" Revert "lazily create the integration session" Revert "use before_setup to set up test instance variables" This reverts commits 4cf3b8ac47f109fa83a6f66eb97d6cb0eace0d05, 303567e554de26822f3107be55c471d6477a745f, and fa63448420d3385dbd043aca22dba973b45b8bb2.
-rw-r--r--actionpack/lib/action_dispatch/testing/integration.rb24
-rw-r--r--actionpack/test/dispatch/response_test.rb4
2 files changed, 18 insertions, 10 deletions
diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb
index 2fe37c5bd4..f7f898288b 100644
--- a/actionpack/lib/action_dispatch/testing/integration.rb
+++ b/actionpack/lib/action_dispatch/testing/integration.rb
@@ -388,16 +388,8 @@ module ActionDispatch
APP_SESSIONS = {}
- attr_reader :app
-
- def before_setup
- super
- @app = nil
- @integration_session = nil
- end
-
- def integration_session
- @integration_session ||= create_session(app)
+ def app
+ @app ||= nil
end
# Reset the current session. This is useful for testing multiple sessions
@@ -425,6 +417,8 @@ module ActionDispatch
%w(get post patch put head delete cookies assigns
xml_http_request xhr get_via_redirect post_via_redirect).each do |method|
define_method(method) do |*args|
+ reset! unless integration_session
+
# reset the html_document variable, except for cookies/assigns calls
unless method == 'cookies' || method == 'assigns'
@html_document = nil
@@ -456,16 +450,19 @@ module ActionDispatch
# Copy the instance variables from the current session instance into the
# test instance.
def copy_session_variables! #:nodoc:
+ return unless integration_session
@controller = @integration_session.controller
@response = @integration_session.response
@request = @integration_session.request
end
def default_url_options
+ reset! unless integration_session
integration_session.default_url_options
end
def default_url_options=(options)
+ reset! unless integration_session
integration_session.default_url_options = options
end
@@ -475,6 +472,7 @@ module ActionDispatch
# Delegate unhandled messages to the current session instance.
def method_missing(sym, *args, &block)
+ reset! unless integration_session
if integration_session.respond_to?(sym)
integration_session.__send__(sym, *args, &block).tap do
copy_session_variables!
@@ -483,6 +481,11 @@ module ActionDispatch
super
end
end
+
+ private
+ def integration_session
+ @integration_session ||= nil
+ end
end
end
@@ -659,6 +662,7 @@ module ActionDispatch
end
def url_options
+ reset! unless integration_session
integration_session.url_options
end
diff --git a/actionpack/test/dispatch/response_test.rb b/actionpack/test/dispatch/response_test.rb
index 5fbd19acdf..c61423dce4 100644
--- a/actionpack/test/dispatch/response_test.rb
+++ b/actionpack/test/dispatch/response_test.rb
@@ -254,6 +254,10 @@ class ResponseTest < ActiveSupport::TestCase
end
class ResponseIntegrationTest < ActionDispatch::IntegrationTest
+ def app
+ @app
+ end
+
test "response cache control from railsish app" do
@app = lambda { |env|
ActionDispatch::Response.new.tap { |resp|