diff --git a/test/test_helper.rb b/test/test_helper.rb index 7c1c8792..8bad651b 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -28,7 +28,7 @@ class ExpectedTestError < RuntimeError; end class ActiveSupport::TestCase - include ConfigurationTestHelper, ProcessesTestHelper, JobsTestHelper + include ConfigurationTestHelper, ProcessesTestHelper, JobsTestHelper, LoggingTestHelper setup do @_on_thread_error = SolidQueue.on_thread_error diff --git a/test/test_helpers/logging_test_helper.rb b/test/test_helpers/logging_test_helper.rb new file mode 100644 index 00000000..dcda61bc --- /dev/null +++ b/test/test_helpers/logging_test_helper.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +module LoggingTestHelper + private + def rails_uses_structured_event_logging? + defined?(ActiveSupport::EventReporter) && + defined?(ActiveRecord::LogSubscriber) && + defined?(ActiveSupport::EventReporter::LogSubscriber) && + ActiveRecord::LogSubscriber < ActiveSupport::EventReporter::LogSubscriber + end + + def with_polling(silence:) + old_silence_polling, SolidQueue.silence_polling = SolidQueue.silence_polling, silence + yield + ensure + SolidQueue.silence_polling = old_silence_polling + end + + def with_active_record_logger(logger) + old_ar_logger, ActiveRecord::Base.logger = ActiveRecord::Base.logger, logger + structured = rails_uses_structured_event_logging? + + if structured + old_as_ls_logger, ActiveSupport::LogSubscriber.logger = ActiveSupport::LogSubscriber.logger, logger + old_debug_mode = ActiveSupport.event_reporter.debug_mode? + ActiveSupport.event_reporter.debug_mode = true + end + yield + ensure + ActiveRecord::Base.logger = old_ar_logger + + if structured + ActiveSupport::LogSubscriber.logger = old_as_ls_logger + ActiveSupport.event_reporter.debug_mode = old_debug_mode + end + end +end diff --git a/test/unit/dispatcher_test.rb b/test/unit/dispatcher_test.rb index 9aa2196e..473dffd8 100644 --- a/test/unit/dispatcher_test.rb +++ b/test/unit/dispatcher_test.rb @@ -118,19 +118,4 @@ class DispatcherTest < ActiveSupport::TestCase dispatcher.start wait_while_with_timeout(1.second) { !SolidQueue::ScheduledExecution.exists? } end - - private - def with_polling(silence:) - old_silence_polling, SolidQueue.silence_polling = SolidQueue.silence_polling, silence - yield - ensure - SolidQueue.silence_polling = old_silence_polling - end - - def with_active_record_logger(logger) - old_logger, ActiveRecord::Base.logger = ActiveRecord::Base.logger, logger - yield - ensure - ActiveRecord::Base.logger = old_logger - end end diff --git a/test/unit/worker_test.rb b/test/unit/worker_test.rb index 8db67912..56305a63 100644 --- a/test/unit/worker_test.rb +++ b/test/unit/worker_test.rb @@ -192,19 +192,4 @@ class WorkerTest < ActiveSupport::TestCase @worker.start sleep 1.second end - - private - def with_polling(silence:) - old_silence_polling, SolidQueue.silence_polling = SolidQueue.silence_polling, silence - yield - ensure - SolidQueue.silence_polling = old_silence_polling - end - - def with_active_record_logger(logger) - old_logger, ActiveRecord::Base.logger = ActiveRecord::Base.logger, logger - yield - ensure - ActiveRecord::Base.logger = old_logger - end end