From 6da5186aaa90c44498c7c6978dbc23568269d0dc Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Tue, 26 Jul 2016 22:02:38 -0300 Subject: [PATCH] There are some cases where @@app is not defined --- .../action_dispatch/testing/integration.rb | 6 +++- .../test/controller/integration_test.rb | 19 ------------- .../application/integration_test_case_test.rb | 28 +++++++++++++++++++ 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/actionpack/lib/action_dispatch/testing/integration.rb b/actionpack/lib/action_dispatch/testing/integration.rb index 749163a327..9404a18699 100644 --- a/actionpack/lib/action_dispatch/testing/integration.rb +++ b/actionpack/lib/action_dispatch/testing/integration.rb @@ -712,7 +712,11 @@ module ActionDispatch module ClassMethods def app - @@app || ActionDispatch.test_app + if defined?(@@app) && @@app + @@app + else + ActionDispatch.test_app + end end def app=(app) diff --git a/actionpack/test/controller/integration_test.rb b/actionpack/test/controller/integration_test.rb index dc3665ed78..6a511e2f68 100644 --- a/actionpack/test/controller/integration_test.rb +++ b/actionpack/test/controller/integration_test.rb @@ -397,25 +397,6 @@ class IntegrationTestUsesCorrectClass < ActionDispatch::IntegrationTest end end -class IntegrationTestDefaultApp < ActionDispatch::IntegrationTest - def setup - @app = self.class.app - self.class.app = nil - - @test_app = ActionDispatch.test_app - ActionDispatch.test_app = 'fake_app' - end - - def teardown - self.class.app = @app - ActionDispatch.test_app = @test_app - end - - def test_class_app_returns_ad_test_app_by_default - assert_equal 'fake_app', self.class.app - end -end - class IntegrationProcessTest < ActionDispatch::IntegrationTest class IntegrationController < ActionController::Base def get diff --git a/railties/test/application/integration_test_case_test.rb b/railties/test/application/integration_test_case_test.rb index d106d5159a..b6e4f02055 100644 --- a/railties/test/application/integration_test_case_test.rb +++ b/railties/test/application/integration_test_case_test.rb @@ -43,4 +43,32 @@ module ApplicationTests assert_match(/0 failures, 0 errors/, output) end end + + class IntegrationTestDefaultApp < ActiveSupport::TestCase + include ActiveSupport::Testing::Isolation + + setup do + build_app + end + + teardown do + teardown_app + end + + test "app method of integration tests returns test_app by default" do + app_file 'test/integration/default_app_test.rb', <<-RUBY + require 'test_helper' + + class DefaultAppIntegrationTest < ActionDispatch::IntegrationTest + def test_app_returns_action_dispatch_test_app_by_default + assert_equal ActionDispatch.test_app, app + end + end + RUBY + + output = Dir.chdir(app_path) { `bin/rails test 2>&1` } + assert_equal 0, $?.to_i, output + assert_match(/0 failures, 0 errors/, output) + end + end end