mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
783763bde9
The current code base is not uniform. After some discussion, we have chosen to go with double quotes by default.
75 lines
1.9 KiB
Ruby
75 lines
1.9 KiB
Ruby
require "abstract_unit"
|
|
require "active_support/testing/autorun"
|
|
require "active_support/test_case"
|
|
require "rails/rack/logger"
|
|
require "logger"
|
|
|
|
module Rails
|
|
module Rack
|
|
class LoggerTest < ActiveSupport::TestCase
|
|
class TestLogger < Rails::Rack::Logger
|
|
NULL = ::Logger.new File::NULL
|
|
|
|
attr_reader :logger
|
|
|
|
def initialize(logger = NULL, taggers = nil, &block)
|
|
super(->(_) { block.call; [200, {}, []] }, taggers)
|
|
@logger = logger
|
|
end
|
|
|
|
def development?; false; end
|
|
end
|
|
|
|
class Subscriber < Struct.new(:starts, :finishes)
|
|
def initialize(starts = [], finishes = [])
|
|
super
|
|
end
|
|
|
|
def start(name, id, payload)
|
|
starts << [name, id, payload]
|
|
end
|
|
|
|
def finish(name, id, payload)
|
|
finishes << [name, id, payload]
|
|
end
|
|
end
|
|
|
|
attr_reader :subscriber, :notifier
|
|
|
|
def setup
|
|
@subscriber = Subscriber.new
|
|
@notifier = ActiveSupport::Notifications.notifier
|
|
@subscription = notifier.subscribe "request.action_dispatch", subscriber
|
|
end
|
|
|
|
def teardown
|
|
notifier.unsubscribe @subscription
|
|
end
|
|
|
|
def test_notification
|
|
logger = TestLogger.new { }
|
|
|
|
assert_difference("subscriber.starts.length") do
|
|
assert_difference("subscriber.finishes.length") do
|
|
logger.call("REQUEST_METHOD" => "GET").last.close
|
|
end
|
|
end
|
|
end
|
|
|
|
def test_notification_on_raise
|
|
logger = TestLogger.new do
|
|
# using an exception class that is not a StandardError subclass on purpose
|
|
raise NotImplementedError
|
|
end
|
|
|
|
assert_difference("subscriber.starts.length") do
|
|
assert_difference("subscriber.finishes.length") do
|
|
assert_raises(NotImplementedError) do
|
|
logger.call "REQUEST_METHOD" => "GET"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|