From 9c8227973cd5fc00f1df199756220712ae78f6dc Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 13 Oct 2005 19:05:32 +0000 Subject: r3574@sedna: jeremy | 2005-10-13 11:16:51 -0700 More precise Logger version test to account for distributions that don't keep Ruby and its stdlib in sync. Logger#silence yields self for convenience. Logger unit tests. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2553 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activesupport/test/clean_logger_test.rb | 69 +++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 activesupport/test/clean_logger_test.rb (limited to 'activesupport/test') diff --git a/activesupport/test/clean_logger_test.rb b/activesupport/test/clean_logger_test.rb new file mode 100644 index 0000000000..0416b4a49e --- /dev/null +++ b/activesupport/test/clean_logger_test.rb @@ -0,0 +1,69 @@ +require 'test/unit' +require 'stringio' +require File.dirname(__FILE__) + '/../lib/active_support/clean_logger' + +class CleanLoggerTest < Test::Unit::TestCase + 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 + # Without yielding self. + @logger.silence do + @logger.debug 'debug' + @logger.info 'info' + @logger.warn 'warn' + @logger.error 'error' + @logger.fatal 'fatal' + end + + # Yielding self. + @logger.silence do |logger| + logger.debug 'debug' + logger.info 'info' + logger.warn 'warn' + logger.error 'error' + logger.fatal 'fatal' + end + + assert_equal "error\nfatal\nerror\nfatal\n", @out.string + end +end + +class CleanLogger_182_to_183_Test < Test::Unit::TestCase + def setup + if Logger.method_defined?(:formatter=) + Logger.send(:alias_method, :hide_formatter=, :formatter=) + else + Logger.send(:define_method, :formatter=) { } + end + load File.dirname(__FILE__) + '/../lib/active_support/clean_logger.rb' + + @out = StringIO.new + @logger = Logger.new(@out) + @logger.progname = 'CLEAN LOGGER TEST' + end + + def teardown + if Logger.method_defined?(:hide_formatter=) + Logger.send(:alias_method, :formatter=, :hide_formatter=) + else + Logger.send(:undef_method, :formatter=) + end + load File.dirname(__FILE__) + '/../lib/active_support/clean_logger.rb' + end + + # Since we've fooled Logger into thinking we're on 1.8.2 if we're on 1.8.3 + # and on 1.8.3 if we're on 1.8.2, it'll define format_message with the + # wrong order of arguments and therefore print progname instead of msg. + def test_format_message_with_faked_version + @logger.error 'error' + assert_equal "CLEAN LOGGER TEST\n", @out.string + end +end -- cgit v1.2.3