require 'abstract_unit' require 'stringio' require 'active_support/core_ext/logger' require 'active_support/testing/deprecation' class CleanLoggerTest < Test::Unit::TestCase include ActiveSupport::Testing::Deprecation def setup @out = StringIO.new @logger = Logger.new(@out) end def test_format_message @logger.error 'error' assert_equal "error\n", @out.string end def test_silence assert_deprecated do # Without yielding self. @logger.silence do @logger.debug 'debug' @logger.info 'info' @logger.warn 'warn' @logger.error 'error' @logger.fatal 'fatal' end end assert_deprecated do # Yielding self. @logger.silence do |logger| logger.debug 'debug' logger.info 'info' logger.warn 'warn' logger.error 'error' logger.fatal 'fatal' end end # Silencer off. Logger.silencer = false assert_deprecated do @logger.silence do |logger| logger.warn 'unsilenced' end end Logger.silencer = true assert_equal "error\nfatal\nerror\nfatal\nunsilenced\n", @out.string end def test_datetime_format @logger.formatter = Logger::Formatter.new @logger.datetime_format = "%Y-%m-%d" @logger.debug 'debug' assert_equal "%Y-%m-%d", @logger.datetime_format assert_match(/D, \[\d\d\d\d-\d\d-\d\d#\d+\] DEBUG -- : debug/, @out.string) end def test_nonstring_formatting an_object = [1, 2, 3, 4, 5] @logger.debug an_object assert_equal("#{an_object.inspect}\n", @out.string) end end