aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/buffered_logger_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/test/buffered_logger_test.rb')
-rw-r--r--activesupport/test/buffered_logger_test.rb201
1 files changed, 0 insertions, 201 deletions
diff --git a/activesupport/test/buffered_logger_test.rb b/activesupport/test/buffered_logger_test.rb
deleted file mode 100644
index 21049d685b..0000000000
--- a/activesupport/test/buffered_logger_test.rb
+++ /dev/null
@@ -1,201 +0,0 @@
-require 'abstract_unit'
-require 'multibyte_test_helpers'
-require 'stringio'
-require 'fileutils'
-require 'tempfile'
-require 'active_support/buffered_logger'
-
-class BufferedLoggerTest < Test::Unit::TestCase
- include MultibyteTestHelpers
-
- Logger = ActiveSupport::BufferedLogger
-
- def setup
- @message = "A debug message"
- @integer_message = 12345
- @output = StringIO.new
- @logger = Logger.new(@output)
- end
-
- def test_write_binary_data_to_existing_file
- t = Tempfile.new ['development', 'log']
- t.binmode
- t.write 'hi mom!'
- t.close
-
- logger = Logger.new t.path
- logger.level = Logger::DEBUG
-
- str = "\x80"
- if str.respond_to?(:force_encoding)
- str.force_encoding("ASCII-8BIT")
- end
-
- logger.add Logger::DEBUG, str
- logger.flush
- ensure
- logger.close
- t.close true
- end
-
- def test_write_binary_data_create_file
- fname = File.join Dir.tmpdir, 'lol', 'rofl.log'
- logger = Logger.new fname
- logger.level = Logger::DEBUG
-
- str = "\x80"
- if str.respond_to?(:force_encoding)
- str.force_encoding("ASCII-8BIT")
- end
-
- logger.add Logger::DEBUG, str
- logger.flush
- ensure
- logger.close
- File.unlink fname
- end
-
- def test_should_log_debugging_message_when_debugging
- @logger.level = Logger::DEBUG
- @logger.add(Logger::DEBUG, @message)
- assert @output.string.include?(@message)
- end
-
- def test_should_not_log_debug_messages_when_log_level_is_info
- @logger.level = Logger::INFO
- @logger.add(Logger::DEBUG, @message)
- assert ! @output.string.include?(@message)
- end
-
- def test_should_add_message_passed_as_block_when_using_add
- @logger.level = Logger::INFO
- @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
- 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 should be empty but it is #{@output.string}"
- end
-
- @logger.flush
- assert !@output.string.empty?, "@logger.send(:buffer).size.to_s should not be empty but it is empty"
- end
-
- define_method "test_disabling_auto_flush_with_#{disable.inspect}_should_flush_at_max_buffer_size_as_failsafe" do
- @logger.auto_flushing = disable
- assert_equal Logger::MAX_BUFFER_SIZE, @logger.auto_flushing
-
- (Logger::MAX_BUFFER_SIZE - 1).times do
- @logger.info 'wait for it..'
- assert @output.string.empty?, "@output.string should be empty but is #{@output.string}"
- end
-
- @logger.info 'there it is.'
- assert !@output.string.empty?, "@logger.send(:buffer).size.to_s should not be empty but it is empty"
- end
- end
-
- def test_should_know_if_its_loglevel_is_below_a_given_level
- Logger::Severity.constants.each do |level|
- @logger.level = Logger::Severity.const_get(level) - 1
- assert @logger.send("#{level.downcase}?"), "didn't know if it was #{level.downcase}? or below"
- 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 should be empty but it is #{@output.string}"
- end
-
- @logger.info 'there it is.'
- assert !@output.string.empty?, "@output.string should not be empty but it is empty"
- end
-
- def test_should_create_the_log_directory_if_it_doesnt_exist
- tmp_directory = File.join(File.dirname(__FILE__), "tmp")
- log_file = File.join(tmp_directory, "development.log")
- FileUtils.rm_rf(tmp_directory)
- @logger = Logger.new(log_file)
- assert File.exist?(tmp_directory)
- end
-
- def test_logger_should_maintain_separate_buffers_for_each_thread
- @logger.auto_flushing = false
-
- a = Thread.new do
- @logger.info("a"); Thread.pass;
- @logger.info("b"); Thread.pass;
- @logger.info("c"); @logger.flush
- end
-
- b = Thread.new do
- @logger.info("x"); Thread.pass;
- @logger.info("y"); Thread.pass;
- @logger.info("z"); @logger.flush
- end
-
- a.join
- b.join
-
- assert @output.string.include?("a\nb\nc\n")
- assert @output.string.include?("x\ny\nz\n")
- end
-
- def test_flush_should_remove_empty_buffers
- @logger.send :buffer
- @logger.expects :clear_buffer
- @logger.flush
- end
-
- def test_buffer_multibyte
- @logger.auto_flushing = 2
- @logger.info(UNICODE_STRING)
- @logger.info(BYTE_STRING)
- assert @output.string.include?(UNICODE_STRING)
- byte_string = @output.string.dup
- if byte_string.respond_to?(:force_encoding)
- byte_string.force_encoding("ASCII-8BIT")
- end
- assert byte_string.include?(BYTE_STRING)
- end
-end