summaryrefslogtreecommitdiff
path: root/test/logger/test_logger.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/logger/test_logger.rb')
-rw-r--r--test/logger/test_logger.rb39
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)