From a947a10c53c79a6d4b2f97862560f965c0fb2581 Mon Sep 17 00:00:00 2001 From: evazion Date: Wed, 23 Dec 2020 17:51:53 -0600 Subject: [PATCH] config: add debug_mode option. Add a debug mode option. This is useful when debugging failed tests. Debug mode disables parallel testing so you can set breakpoints in tests with binding.pry (normally parallel testing makes it hard to set breakpoints). Debug mode also disables global exception handling for controllers. This lets exceptions bubble up to the console during controller tests (normally exceptions are swallowed by the controller, which prevents you from seeing backtraces in failed controller tests). --- app/controllers/application_controller.rb | 2 ++ config/danbooru_default_config.rb | 9 +++++++++ test/test_helper.rb | 10 ++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 8f6faeb53..843b72670 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -88,6 +88,8 @@ class ApplicationController < ActionController::Base end def rescue_exception(exception) + return if Danbooru.config.debug_mode + case exception when ActionView::Template::Error rescue_exception(exception.cause) diff --git a/config/danbooru_default_config.rb b/config/danbooru_default_config.rb index 0bb6d3459..beed3096d 100644 --- a/config/danbooru_default_config.rb +++ b/config/danbooru_default_config.rb @@ -52,6 +52,15 @@ module Danbooru "_danbooru2_session" end + # Debug mode does some things to make testing easier. It disables parallel + # testing and it replaces Danbooru's custom exception page with the default + # Rails exception page. This is only useful during development and testing. + # + # Usage: `DANBOORU_DEBUG_MODE=true bin/rails test + def debug_mode + false + end + def source_code_url "https://github.com/danbooru/danbooru" end diff --git a/test/test_helper.rb b/test/test_helper.rb index 0959a8ccd..1af778120 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -30,11 +30,13 @@ class ActiveSupport::TestCase mock_post_version_service! mock_pool_version_service! - parallelize - parallelize_setup do |worker| - Rails.application.load_seed + unless Danbooru.config.debug_mode + parallelize + parallelize_setup do |worker| + Rails.application.load_seed - SimpleCov.command_name "#{SimpleCov.command_name}-#{worker}" + SimpleCov.command_name "#{SimpleCov.command_name}-#{worker}" + end end parallelize_teardown do |worker|