Skip to content

Commit b208c05

Browse files
committed
Add LoggingTestHelper and refactor tests to use it
Introduced LoggingTestHelper to encapsulate logging-related test utilities. Updated ActiveSupport::TestCase to include the new helper and removed redundant logging methods from DispatcherTest and WorkerTest, improving code organization and maintainability.
1 parent bd6b377 commit b208c05

File tree

8 files changed

+55
-33
lines changed

8 files changed

+55
-33
lines changed

.github/workflows/main.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@ jobs:
2929
- 3.3
3030
- 3.4
3131
database: [ mysql, postgres, sqlite ]
32-
gemfile: [ rails_7_1, rails_7_2, rails_8_0, rails_main ]
32+
gemfile: [ rails_7_1, rails_7_2, rails_8_0, rails_8_1, rails_main ]
3333
exclude:
3434
- ruby-version: "3.1"
3535
gemfile: rails_8_0
36+
- ruby-version: "3.1"
37+
gemfile: rails_8_1
3638
- ruby-version: "3.1"
3739
gemfile: rails_main
3840
services:

Appraisals

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ appraise "rails-8-0" do
1515
gem "railties", "~> 8.0.0"
1616
end
1717

18+
appraise "rails-8-1" do
19+
gem "railties", "~> 8.1.0"
20+
end
21+
1822
appraise "rails-main" do
1923
gem "railties", github: "rails/rails", branch: "main"
2024
end

Rakefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ require "bundler/setup"
55
APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
66
load "rails/tasks/engine.rake"
77

8-
load "rails/tasks/statistics.rake"
8+
if Rails::VERSION::MAJOR < 8
9+
load "rails/tasks/statistics.rake"
10+
end
911

1012
require "bundler/gem_tasks"
1113
require "rake/tasklib"

gemfiles/rails_8_1.gemfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# This file was generated by Appraisal
2+
3+
source "https://rubygems.org"
4+
5+
gem "railties", "~> 8.1.0"
6+
7+
gemspec path: "../"

test/test_helper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class ExpectedTestError < RuntimeError; end
2828

2929

3030
class ActiveSupport::TestCase
31-
include ConfigurationTestHelper, ProcessesTestHelper, JobsTestHelper
31+
include ConfigurationTestHelper, ProcessesTestHelper, JobsTestHelper, LoggingTestHelper
3232

3333
setup do
3434
@_on_thread_error = SolidQueue.on_thread_error
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# frozen_string_literal: true
2+
3+
module LoggingTestHelper
4+
private
5+
def rails_uses_structured_event_logging?
6+
defined?(ActiveSupport::EventReporter) &&
7+
defined?(ActiveRecord::LogSubscriber) &&
8+
defined?(ActiveSupport::EventReporter::LogSubscriber) &&
9+
ActiveRecord::LogSubscriber < ActiveSupport::EventReporter::LogSubscriber
10+
end
11+
12+
def with_polling(silence:)
13+
old_silence_polling, SolidQueue.silence_polling = SolidQueue.silence_polling, silence
14+
yield
15+
ensure
16+
SolidQueue.silence_polling = old_silence_polling
17+
end
18+
19+
def with_active_record_logger(logger)
20+
old_ar_logger, ActiveRecord::Base.logger = ActiveRecord::Base.logger, logger
21+
structured = rails_uses_structured_event_logging?
22+
23+
if structured
24+
old_as_ls_logger, ActiveSupport::LogSubscriber.logger = ActiveSupport::LogSubscriber.logger, logger
25+
old_debug_mode = ActiveSupport.event_reporter.debug_mode?
26+
ActiveSupport.event_reporter.debug_mode = true
27+
end
28+
yield
29+
ensure
30+
ActiveRecord::Base.logger = old_ar_logger
31+
32+
if structured
33+
ActiveSupport::LogSubscriber.logger = old_as_ls_logger
34+
ActiveSupport.event_reporter.debug_mode = old_debug_mode
35+
end
36+
end
37+
end

test/unit/dispatcher_test.rb

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -118,19 +118,4 @@ class DispatcherTest < ActiveSupport::TestCase
118118
dispatcher.start
119119
wait_while_with_timeout(1.second) { !SolidQueue::ScheduledExecution.exists? }
120120
end
121-
122-
private
123-
def with_polling(silence:)
124-
old_silence_polling, SolidQueue.silence_polling = SolidQueue.silence_polling, silence
125-
yield
126-
ensure
127-
SolidQueue.silence_polling = old_silence_polling
128-
end
129-
130-
def with_active_record_logger(logger)
131-
old_logger, ActiveRecord::Base.logger = ActiveRecord::Base.logger, logger
132-
yield
133-
ensure
134-
ActiveRecord::Base.logger = old_logger
135-
end
136121
end

test/unit/worker_test.rb

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -192,19 +192,4 @@ class WorkerTest < ActiveSupport::TestCase
192192
@worker.start
193193
sleep 1.second
194194
end
195-
196-
private
197-
def with_polling(silence:)
198-
old_silence_polling, SolidQueue.silence_polling = SolidQueue.silence_polling, silence
199-
yield
200-
ensure
201-
SolidQueue.silence_polling = old_silence_polling
202-
end
203-
204-
def with_active_record_logger(logger)
205-
old_logger, ActiveRecord::Base.logger = ActiveRecord::Base.logger, logger
206-
yield
207-
ensure
208-
ActiveRecord::Base.logger = old_logger
209-
end
210195
end

0 commit comments

Comments
 (0)