From a917f4097943e6e800185efaa8df1af4315a307f Mon Sep 17 00:00:00 2001 From: Pedro Moreira Date: Wed, 3 Jun 2015 16:38:32 +0100 Subject: [PATCH] Disable display of detailed exceptions `@allow-rescue` permits rescuing exceptions by setting `action_dispatch.show_exceptions` to true in the env hash. However, this will render the detailed error page and not the public error page you'd encounter in production. Given that the feature enables testing of error pages, and seems to be intended to mirror production behaviour as per the comment on https://github.com/cucumber/cucumber-rails/blob/master/lib/generators/cucumber/install/templates/support/_rails_each_run.rb.erb#L6-L14, this PR sets `action_dispatch.show_detailed_exceptions` to false, thus enabling the public error page to be rendered. --- features/allow_rescue.feature | 9 +++++++-- lib/cucumber/rails/action_controller.rb | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/features/allow_rescue.feature b/features/allow_rescue.feature index 29fe6d09..94aa93fe 100644 --- a/features/allow_rescue.feature +++ b/features/allow_rescue.feature @@ -23,20 +23,25 @@ Feature: Allow Cucumber to rescue exceptions Feature: posts @allow-rescue Scenario: See posts - When I look at the posts + When I look at the posts + Then I should see the public error page """ And I write to "features/step_definitions/posts_steps.rb" with: """ When /^I look at the posts$/ do visit '/posts' end + Then /^I should see the public error page$/ do + expect(page).to have_content "We're sorry, but something went wrong. \ + If you are the application owner check the logs for more information." + end """ And I run `bundle exec rake db:migrate` And I run `bundle exec cucumber` Then it should pass with: """ 1 scenario (1 passed) - 1 step (1 passed) + 2 steps (2 passed) """ Scenario: Don't allow rescue diff --git a/lib/cucumber/rails/action_controller.rb b/lib/cucumber/rails/action_controller.rb index 36af2ab8..9a64c7ba 100644 --- a/lib/cucumber/rails/action_controller.rb +++ b/lib/cucumber/rails/action_controller.rb @@ -7,6 +7,7 @@ class ActionDispatch::ShowExceptions def call(env) env['action_dispatch.show_exceptions'] = !!ActionController::Base.allow_rescue + env['action_dispatch.show_detailed_exceptions'] = false __cucumber_orig_call__(env) end end