discourse/spec/support/logging_helpers.rb
Jarek Radosz 960f34da9d
DEV: Finish extracting rails spec helpers (#40552)
Also move matchers to a subdirectory
2026-06-04 14:11:14 +02:00

26 lines
657 B
Ruby
Vendored

# frozen_string_literal: true
# Capturing and silencing log/stdout output in specs.
module LoggingHelpers
def silence_stdout
STDOUT.stubs(:write)
yield
ensure
STDOUT.unstub(:write)
end
def track_log_messages
logger = FakeLogger.new
Rails.logger.broadcast_to(logger)
yield logger
logger
ensure
Rails.logger.stop_broadcasting_to(logger)
end
end
# Block direct assignment to Rails.logger in tests; use `track_log_messages` instead.
def Rails.logger=(logger)
raise "Setting Rails.logger is not allowed as it can lead to unexpected behavior in tests. Use `fake_logger = track_log_messages { ... }` instead."
end