diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-12-14 05:43:01 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-12-14 05:43:01 +0000 |
commit | 95ed081663af63b688f5094d2c454adb4e64f63f (patch) | |
tree | 1f414110b05c6f12ccdd358b42d49ab3d6c184b1 /test/logger | |
parent | 742659cb6c03da6ab61c7036a0ca6abdd5964119 (diff) |
logger.rb: fix extra log ratation
* lib/logger.rb (lock_shift_log): no need to rotate the log file
if it has been rotated by another process. based on the patch
by no6v (Nobuhiro IMAI) in [ruby-core:58620]. [Bug #9133]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44203 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/logger')
-rw-r--r-- | test/logger/test_logger.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/test/logger/test_logger.rb b/test/logger/test_logger.rb index 04bf779538..eda6484a56 100644 --- a/test/logger/test_logger.rb +++ b/test/logger/test_logger.rb @@ -2,6 +2,7 @@ require 'test/unit' require 'logger' require 'tempfile' +require 'tmpdir' require_relative '../ruby/envutil' @@ -542,6 +543,44 @@ class TestLogDevice < Test::Unit::TestCase end end + def test_shifting_size_not_rotate_too_much + d(@filename).__send__(:add_log_header, @tempfile) + header_size = @tempfile.size + message = "*" * 99 + "\n" + shift_size = header_size + message.size * 3 - 1 + opt = {shift_age: 1, shift_size: shift_size} + + Dir.mktmpdir do |tmpdir| + begin + log = File.join(tmpdir, "log") + logdev1 = d(log, opt) + logdev2 = d(log, opt) + + assert_file.identical?(log, logdev1.dev) + assert_file.identical?(log, logdev2.dev) + + 3.times{logdev1.write(message)} + assert_file.identical?(log, logdev1.dev) + assert_file.identical?(log, logdev2.dev) + + logdev1.write(message) + assert_file.identical?(log, logdev1.dev) + assert_file.identical?(log + ".0", logdev2.dev) + + logdev2.write(message) + assert_file.identical?(log, logdev1.dev) + assert_file.identical?(log, logdev2.dev) + + logdev1.write(message) + assert_file.identical?(log, logdev1.dev) + assert_file.identical?(log, logdev2.dev) + ensure + logdev1.close if logdev1 + logdev2.close if logdev2 + end + end + end + private def run_children(n, args, src) |