Upgraded Rails and RSpec
[monkeycharger.git] / vendor / rails / activesupport / test / buffered_logger_test.rb
blob5ce197eba800d24cc1d843354576a6295622aa33
1 require File.dirname(__FILE__) + '/abstract_unit'
2 require 'stringio'
4 class BufferedLoggerTest < Test::Unit::TestCase
5   def setup
6     @message = "A debug message"
7     @integer_message = 12345
8     @output  = StringIO.new
9     @logger  = ActiveSupport::BufferedLogger.new(@output)
10   end
12   def test_should_log_debugging_message_when_debugging
13     @logger.level = Logger::DEBUG
14     @logger.add(Logger::DEBUG, @message)
15     assert @output.string.include?(@message)
16   end
18   def test_should_not_log_debug_messages_when_log_level_is_info
19     @logger.level = Logger::INFO
20     @logger.add(Logger::DEBUG, @message)
21     assert ! @output.string.include?(@message)
22   end
24   def test_should_add_message_passed_as_block_when_using_add
25     @logger.level = Logger::INFO
26     @logger.add(Logger::INFO) {@message}
27     assert @output.string.include?(@message)
28   end
30   def test_should_add_message_passed_as_block_when_using_shortcut
31     @logger.level = Logger::INFO
32     @logger.info {@message}
33     assert @output.string.include?(@message)
34   end
36   def test_should_convert_message_to_string
37     @logger.level = Logger::INFO
38     @logger.info @integer_message
39     assert @output.string.include?(@integer_message.to_s)
40   end
42   def test_should_convert_message_to_string_when_passed_in_block
43     @logger.level = Logger::INFO
44     @logger.info {@integer_message}
45     assert @output.string.include?(@integer_message.to_s)
46   end
48   def test_should_not_evaluate_block_if_message_wont_be_logged
49     @logger.level = Logger::INFO
50     evaluated = false
51     @logger.add(Logger::DEBUG) {evaluated = true}
52     assert evaluated == false
53   end
55   def test_should_not_mutate_message
56     message_copy = @message.dup
57     @logger.info @message
58     assert_equal message_copy, @message
59   end
62   [false, nil, 0].each do |disable|
63     define_method "test_disabling_auto_flush_with_#{disable.inspect}_should_buffer_until_explicit_flush" do
64       @logger.auto_flushing = disable
66       4.times do
67         @logger.info 'wait for it..'
68         assert @output.string.empty?, @output.string
69       end
71       @logger.flush
72       assert !@output.string.empty?, @logger.buffer.size
73     end
75     define_method "test_disabling_auto_flush_with_#{disable.inspect}_should_flush_at_max_buffer_size_as_failsafe" do
76       @logger.auto_flushing = disable
77       assert_equal ActiveSupport::BufferedLogger::MAX_BUFFER_SIZE, @logger.auto_flushing
79       (ActiveSupport::BufferedLogger::MAX_BUFFER_SIZE - 1).times do
80         @logger.info 'wait for it..'
81         assert @output.string.empty?, @output.string
82       end
84       @logger.info 'there it is.'
85       assert !@output.string.empty?, @logger.buffer.size
86     end
87   end
88   
89   def test_should_know_if_its_loglevel_is_below_a_given_level
90     ActiveSupport::BufferedLogger::Severity.constants.each do |level|
91       @logger.level = ActiveSupport::BufferedLogger::Severity.const_get(level) - 1
92       assert @logger.send("#{level.downcase}?"), "didn't know if it was #{level.downcase}? or below"
93     end
94   end
96   def test_should_auto_flush_every_n_messages
97     @logger.auto_flushing = 5
99     4.times do
100       @logger.info 'wait for it..'
101       assert @output.string.empty?, @output.string
102     end
104     @logger.info 'there it is.'
105     assert !@output.string.empty?, @output.string
106   end