aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/clean_logger_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/test/clean_logger_test.rb')
-rw-r--r--activesupport/test/clean_logger_test.rb69
1 files changed, 69 insertions, 0 deletions
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