From 8906bf2c1bc860efcd17e25c5a9428bdc7a2fb69 Mon Sep 17 00:00:00 2001 From: nahi Date: Tue, 20 Oct 2009 15:08:38 +0000 Subject: * lib/logger.rb: imported upstream version (logger/1.2.7) see #2238. * do not raise an exception even if log writing failed. * do not raise ShiftingError if an aged file already exists. (no ShiftingError will be raised from 1.2.7, just warn() instead) * test/logger/test_logger.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/logger/test_logger.rb | 150 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 137 insertions(+), 13 deletions(-) (limited to 'test/logger') diff --git a/test/logger/test_logger.rb b/test/logger/test_logger.rb index a6c132d0f3..8ddcd242ba 100644 --- a/test/logger/test_logger.rb +++ b/test/logger/test_logger.rb @@ -6,9 +6,9 @@ require 'tempfile' class TestLoggerSeverity < Test::Unit::TestCase def test_enum logger_levels = Logger.constants - levels = [:WARN, :UNKNOWN, :INFO, :FATAL, :DEBUG, :ERROR] + levels = ["WARN", "UNKNOWN", "INFO", "FATAL", "DEBUG", "ERROR"] Logger::Severity.constants.each do |level| - assert(levels.include?(level)) + assert(levels.include?(level.to_s)) assert(logger_levels.include?(level)) end assert_equal(levels.size, Logger::Severity.constants.size) @@ -21,16 +21,19 @@ class TestLogger < Test::Unit::TestCase def setup @logger = Logger.new(nil) + @filename = __FILE__ + ".#{$$}" end - def test_const_progname - assert %r!\Alogger\.rb/\S+\z! === Logger::ProgName + def teardown + unless $DEBUG + File.unlink(@filename) if File.exist?(@filename) + end end class Log attr_reader :label, :datetime, :pid, :severity, :progname, :msg def initialize(line) - /\A(\w+), \[([^#]*)#(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/n =~ line + /\A(\w+), \[([^#]*)#(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/ =~ line @label, @datetime, @pid, @severity, @progname, @msg = $1, $2, $3, $4, $5, $6 end end @@ -262,28 +265,56 @@ class TestLogger < Test::Unit::TestCase end class TestLogDevice < Test::Unit::TestCase - def d(log) - Logger::LogDevice.new(log) + class LogExcnRaiser + def write(*arg) + raise 'disk is full' + end + + def close + end + + def stat + Object.new + end + end + + def setup + @filename = __FILE__ + ".#{$$}" + end + + def teardown + unless $DEBUG + File.unlink(@filename) if File.exist?(@filename) + end + end + + def d(log, opt = {}) + Logger::LogDevice.new(log, opt) end def test_initialize logdev = d(STDERR) assert_equal(STDERR, logdev.dev) assert_nil(logdev.filename) - assert_raise(TypeError) do + assert_raises(TypeError) do d(nil) end # - filename = __FILE__ + ".#{$$}" + logdev = d(@filename) begin - logdev = d(filename) - assert(File.exist?(filename)) + assert(File.exist?(@filename)) assert(logdev.dev.sync) - assert_equal(filename, logdev.filename) + assert_equal(@filename, logdev.filename) + logdev.write('hello') ensure logdev.close - File.unlink(filename) end + # create logfile whitch is already exist. + logdev = d(@filename) + logdev.write('world') + logfile = File.read(@filename) + assert_equal(2, logfile.split(/\n/).size) + assert_match(/^helloworld$/, logfile) end def test_write @@ -295,6 +326,15 @@ class TestLogDevice < Test::Unit::TestCase msg = r.read r.close assert_equal("msg2\n\n", msg) + # + logdev = d(LogExcnRaiser.new) + begin + assert_nothing_raised do + logdev.write('hello') + end + ensure + logdev.close + end end def test_close @@ -377,4 +417,88 @@ class TestLogDevice < Test::Unit::TestCase File.unlink(logfile1) File.unlink(logfile2) end + + def test_shifting_age_variants + logger = Logger.new(@filename, 'daily') + logger.info('daily') + logger.close + logger = Logger.new(@filename, 'weekly') + logger.info('weekly') + logger.close + logger = Logger.new(@filename, 'monthly') + logger.info('monthly') + logger.close + end + + def test_shifting_age + # shift_age other than 'daily', 'weekly', and 'monthly' means 'everytime' + yyyymmdd = Time.now.strftime("%Y%m%d") + filename1 = @filename + ".#{yyyymmdd}" + filename2 = @filename + ".#{yyyymmdd}.1" + filename3 = @filename + ".#{yyyymmdd}.2" + begin + logger = Logger.new(@filename, 'now') + assert(File.exist?(@filename)) + assert(!File.exist?(filename1)) + assert(!File.exist?(filename2)) + assert(!File.exist?(filename3)) + logger.info("0" * 15) + assert(File.exist?(@filename)) + assert(File.exist?(filename1)) + assert(!File.exist?(filename2)) + assert(!File.exist?(filename3)) + logger.warn("0" * 15) + assert(File.exist?(@filename)) + assert(File.exist?(filename1)) + assert(File.exist?(filename2)) + assert(!File.exist?(filename3)) + logger.error("0" * 15) + assert(File.exist?(@filename)) + assert(File.exist?(filename1)) + assert(File.exist?(filename2)) + assert(File.exist?(filename3)) + ensure + [filename1, filename2, filename3].each do |filename| + File.unlink(filename) if File.exist?(filename) + end + end + end +end + + +class TestLoggerApplication < Test::Unit::TestCase + def setup + @app = Logger::Application.new('appname') + @filename = __FILE__ + ".#{$$}" + end + + def teardown + unless $DEBUG + File.unlink(@filename) if File.exist?(@filename) + end + end + + def test_initialize + app = Logger::Application.new('appname') + assert_equal('appname', app.appname) + end + + def test_start + @app.set_log(@filename) + @app.level = Logger::UNKNOWN + @app.start # logs FATAL log + assert_equal(1, File.read(@filename).split(/\n/).size) + end + + def test_logger + @app.level = Logger::WARN + @app.set_log(@filename) + assert_equal(Logger::WARN, @app.logger.level) + @app.logger = logger = Logger.new(STDOUT) + assert_equal(logger, @app.logger) + assert_equal(Logger::WARN, @app.logger.level) + @app.log = @filename + assert(logger != @app.logger) + assert_equal(Logger::WARN, @app.logger.level) + end end -- cgit v1.2.3