Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

root/trunk/activesupport/test/buffered_logger_test.rb

Revision 9154, 3.5 kB (checked in by bitsweat, 5 months ago)

require fileutils

Line 
1 require 'abstract_unit'
2 require 'stringio'
3 require 'fileutils'
4
5 class BufferedLoggerTest < Test::Unit::TestCase
6   def setup
7     @message = "A debug message"
8     @integer_message = 12345
9     @output  = StringIO.new
10     @logger  = ActiveSupport::BufferedLogger.new(@output)
11   end
12
13   def test_should_log_debugging_message_when_debugging
14     @logger.level = Logger::DEBUG
15     @logger.add(Logger::DEBUG, @message)
16     assert @output.string.include?(@message)
17   end
18
19   def test_should_not_log_debug_messages_when_log_level_is_info
20     @logger.level = Logger::INFO
21     @logger.add(Logger::DEBUG, @message)
22     assert ! @output.string.include?(@message)
23   end
24
25   def test_should_add_message_passed_as_block_when_using_add
26     @logger.level = Logger::INFO
27     @logger.add(Logger::INFO) {@message}
28     assert @output.string.include?(@message)
29   end
30
31   def test_should_add_message_passed_as_block_when_using_shortcut
32     @logger.level = Logger::INFO
33     @logger.info {@message}
34     assert @output.string.include?(@message)
35   end
36
37   def test_should_convert_message_to_string
38     @logger.level = Logger::INFO
39     @logger.info @integer_message
40     assert @output.string.include?(@integer_message.to_s)
41   end
42
43   def test_should_convert_message_to_string_when_passed_in_block
44     @logger.level = Logger::INFO
45     @logger.info {@integer_message}
46     assert @output.string.include?(@integer_message.to_s)
47   end
48
49   def test_should_not_evaluate_block_if_message_wont_be_logged
50     @logger.level = Logger::INFO
51     evaluated = false
52     @logger.add(Logger::DEBUG) {evaluated = true}
53     assert evaluated == false
54   end
55
56   def test_should_not_mutate_message
57     message_copy = @message.dup
58     @logger.info @message
59     assert_equal message_copy, @message
60   end
61
62
63   [false, nil, 0].each do |disable|
64     define_method "test_disabling_auto_flush_with_#{disable.inspect}_should_buffer_until_explicit_flush" do
65       @logger.auto_flushing = disable
66
67       4.times do
68         @logger.info 'wait for it..'
69         assert @output.string.empty?, @output.string
70       end
71
72       @logger.flush
73       assert !@output.string.empty?, @logger.buffer.size
74     end
75
76     define_method "test_disabling_auto_flush_with_#{disable.inspect}_should_flush_at_max_buffer_size_as_failsafe" do
77       @logger.auto_flushing = disable
78       assert_equal ActiveSupport::BufferedLogger::MAX_BUFFER_SIZE, @logger.auto_flushing
79
80       (ActiveSupport::BufferedLogger::MAX_BUFFER_SIZE - 1).times do
81         @logger.info 'wait for it..'
82         assert @output.string.empty?, @output.string
83       end
84
85       @logger.info 'there it is.'
86       assert !@output.string.empty?, @logger.buffer.size
87     end
88   end
89  
90   def test_should_know_if_its_loglevel_is_below_a_given_level
91     ActiveSupport::BufferedLogger::Severity.constants.each do |level|
92       @logger.level = ActiveSupport::BufferedLogger::Severity.const_get(level) - 1
93       assert @logger.send("#{level.downcase}?"), "didn't know if it was #{level.downcase}? or below"
94     end
95   end
96
97   def test_should_auto_flush_every_n_messages
98     @logger.auto_flushing = 5
99
100     4.times do
101       @logger.info 'wait for it..'
102       assert @output.string.empty?, @output.string
103     end
104
105     @logger.info 'there it is.'
106     assert !@output.string.empty?, @output.string
107   end
108  
109   def test_should_create_the_log_directory_if_it_doesnt_exist
110     tmp_directory = File.join(File.dirname(__FILE__), "tmp")
111     log_file = File.join(tmp_directory, "development.log")
112     assert !File.exist?(tmp_directory)
113     @logger  = ActiveSupport::BufferedLogger.new(log_file)
114     assert File.exist?(tmp_directory)
115   ensure
116     FileUtils.rm_rf(tmp_directory)
117   end
118 end
Note: See TracBrowser for help on using the browser.