aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Phippen <samphippen@googlemail.com>2016-08-20 14:24:54 +0100
committerSam Phippen <samphippen@googlemail.com>2016-08-20 14:41:37 +0100
commita887c9cbb0fbac2689fc4129d3d99af5302f9356 (patch)
tree2e1ee2e196e8862896923bbfd5b628f8b36b88da
parent02c9a78489dae495f15f4bc967359308ca4203f6 (diff)
downloadrails-a887c9cbb0fbac2689fc4129d3d99af5302f9356.tar.gz
rails-a887c9cbb0fbac2689fc4129d3d99af5302f9356.tar.bz2
rails-a887c9cbb0fbac2689fc4129d3d99af5302f9356.zip
Allow the `integration_sesion` to be set early on ActionDispatch::Integration::Runner.
In commit fa63448420d3385dbd043aca22dba973b45b8bb2, @tenderlove changed the behaviour of the way `integration_session` is set up in this object. It used to be the case that the first time it was accessed, it was memoized with nil, however, this means that if it had already been set it was not replaced. After that commit, it is now always set to `nil` in the execution of `before_setup`. In RSpec, users are able to invoke `host!` in `before(:all)` blocks, which execute well before `before_setup` is ever invoked (which happens in what is equivalent to a `before(:each)` block, for each test. `host!` causes the integration session to be set up to correctly change the host, but after fa63448420d3385dbd043aca22dba973b45b8bb2 the `integration_session` gets overwritten, meaning that users lose their `host!` configuration (see https://github.com/rspec/rspec-rails/issues/1662). This commit changes the behaviour back to memoizing with `nil`, as opposed to directly overwriting with `nil`. This causes the correct behaviour to occur in RSpec, and unless I'm mistaken will also ensure that users who want to modify their integration sessions early in rails will also be able to do so.
-rw-r--r--actionpack/lib/action_dispatch/testing/integration.rb2
-rw-r--r--actionpack/test/dispatch/runner_test.rb18
2 files changed, 19 insertions, 1 deletions
diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb
index 13f7fc6fa6..8ab490642e 100644
--- a/actionpack/lib/action_dispatch/testing/integration.rb
+++ b/actionpack/lib/action_dispatch/testing/integration.rb
@@ -422,7 +422,7 @@ module ActionDispatch
def before_setup # :nodoc:
@app = nil
- @integration_session = nil
+ @integration_session ||= nil
super
end
diff --git a/actionpack/test/dispatch/runner_test.rb b/actionpack/test/dispatch/runner_test.rb
new file mode 100644
index 0000000000..969933c9ed
--- /dev/null
+++ b/actionpack/test/dispatch/runner_test.rb
@@ -0,0 +1,18 @@
+require "abstract_unit"
+
+class RunnerTest < ActiveSupport::TestCase
+ test "runner preserves the setting of integration_session" do
+ runner = Class.new do
+ def before_setup
+
+ end
+ end.new
+
+ runner.extend(ActionDispatch::Integration::Runner)
+ runner.integration_session.host! "lvh.me"
+
+ runner.before_setup
+
+ assert_equal "lvh.me", runner.integration_session.host
+ end
+end