diff options
Diffstat (limited to 'activesupport/test')
-rw-r--r-- | activesupport/test/buffered_logger_test.rb | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/activesupport/test/buffered_logger_test.rb b/activesupport/test/buffered_logger_test.rb index 9a78ee3694..cabdb59045 100644 --- a/activesupport/test/buffered_logger_test.rb +++ b/activesupport/test/buffered_logger_test.rb @@ -8,7 +8,7 @@ class BufferedLoggerTest < Test::Unit::TestCase @output = StringIO.new @logger = ActiveSupport::BufferedLogger.new(@output) end - + def test_should_log_debugging_message_when_debugging @logger.level = Logger::DEBUG @logger.add(Logger::DEBUG, @message) @@ -26,35 +26,62 @@ class BufferedLoggerTest < Test::Unit::TestCase @logger.add(Logger::INFO) {@message} assert @output.string.include?(@message) end - + def test_should_add_message_passed_as_block_when_using_shortcut @logger.level = Logger::INFO @logger.info {@message} assert @output.string.include?(@message) end - + def test_should_convert_message_to_string @logger.level = Logger::INFO @logger.info @integer_message assert @output.string.include?(@integer_message.to_s) end - + def test_should_convert_message_to_string_when_passed_in_block @logger.level = Logger::INFO @logger.info {@integer_message} assert @output.string.include?(@integer_message.to_s) end - + def test_should_not_evaluate_block_if_message_wont_be_logged @logger.level = Logger::INFO evaluated = false @logger.add(Logger::DEBUG) {evaluated = true} - assert evaluated == false + assert evaluated == false end - + def test_should_not_mutate_message message_copy = @message.dup @logger.info @message assert_equal message_copy, @message end + + + [false, nil, 0].each do |disable| + define_method "test_disabling_auto_flush_with_#{disable.inspect}_should_buffer_until_explicit_flush" do + @logger.auto_flushing = disable + + 4.times do + @logger.info 'wait for it..' + assert @output.string.empty?, @output.string + end + + @logger.flush + assert !@output.string.empty?, @logger.buffer.size + end + end + + def test_should_auto_flush_every_n_messages + @logger.auto_flushing = 5 + + 4.times do + @logger.info 'wait for it..' + assert @output.string.empty?, @output.string + end + + @logger.info 'there it is.' + assert !@output.string.empty?, @output.string + end end |