summaryrefslogtreecommitdiff
path: root/test/logger
diff options
context:
space:
mode:
Diffstat (limited to 'test/logger')
-rw-r--r--test/logger/helper.rb13
-rw-r--r--test/logger/test_formatter.rb35
-rw-r--r--test/logger/test_logdevice.rb5
-rw-r--r--test/logger/test_logger.rb8
-rw-r--r--test/logger/test_logperiod.rb2
-rw-r--r--test/logger/test_severity.rb34
6 files changed, 76 insertions, 21 deletions
diff --git a/test/logger/helper.rb b/test/logger/helper.rb
deleted file mode 100644
index 9eaeb205b0..0000000000
--- a/test/logger/helper.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-ROOT_DIR = File.dirname(__dir__)
-$LOAD_PATH.unshift File.join(ROOT_DIR, 'lib') # to use logger in this repo instead of ruby built-in logger
-$LOAD_PATH.unshift File.join(ROOT_DIR, 'test', 'lib') # to use custom test-unit in this repo
-require 'logger'
-require 'test/unit'
-
-begin
- # for standalone test suite on ruby/logger
- require 'core_assertions'
-
- Test::Unit::TestCase.include Test::Unit::CoreAssertions
-rescue LoadError
-end
diff --git a/test/logger/test_formatter.rb b/test/logger/test_formatter.rb
new file mode 100644
index 0000000000..9465722991
--- /dev/null
+++ b/test/logger/test_formatter.rb
@@ -0,0 +1,35 @@
+# coding: US-ASCII
+# frozen_string_literal: false
+require 'logger'
+
+class TestFormatter < Test::Unit::TestCase
+ def test_call
+ severity = 'INFO'
+ time = Time.now
+ progname = 'ruby'
+ msg = 'This is a test'
+ formatter = Logger::Formatter.new
+
+ result = formatter.call(severity, time, progname, msg)
+ time_matcher = /\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}/
+ matcher = /#{severity[0..0]}, \[#{time_matcher} #\d+\] #{severity} -- #{progname}: #{msg}\n/
+
+ assert_match(matcher, result)
+ end
+
+ class CustomFormatter < Logger::Formatter
+ def call(time)
+ format_datetime(time)
+ end
+ end
+
+ def test_format_datetime
+ time = Time.now
+ formatter = CustomFormatter.new
+
+ result = formatter.call(time)
+ matcher = /^\d{4}\-\d{2}\-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}$/
+
+ assert_match(matcher, result)
+ end
+end
diff --git a/test/logger/test_logdevice.rb b/test/logger/test_logdevice.rb
index 6fefd356cd..8f1c15542a 100644
--- a/test/logger/test_logdevice.rb
+++ b/test/logger/test_logdevice.rb
@@ -1,6 +1,6 @@
# coding: US-ASCII
# frozen_string_literal: false
-require_relative 'helper'
+require 'logger'
require 'tempfile'
require 'tmpdir'
@@ -435,6 +435,7 @@ class TestLogDevice < Test::Unit::TestCase
logdev1.write(message)
assert_file.identical?(log, logdev1.dev)
+ # NOTE: below assertion fails in JRuby 9.3 and TruffleRuby
assert_file.identical?(log + ".0", logdev2.dev)
logdev2.write(message)
@@ -451,7 +452,7 @@ class TestLogDevice < Test::Unit::TestCase
end
ensure
logdev0.close
- end unless /mswin|mingw|cygwin/ =~ RUBY_PLATFORM
+ end unless /mswin|mingw|cygwin/ =~ RbConfig::CONFIG['host_os']
def test_shifting_midnight
Dir.mktmpdir do |tmpdir|
diff --git a/test/logger/test_logger.rb b/test/logger/test_logger.rb
index 4bbfd523c0..37d0f5862a 100644
--- a/test/logger/test_logger.rb
+++ b/test/logger/test_logger.rb
@@ -1,6 +1,6 @@
# coding: US-ASCII
# frozen_string_literal: false
-require_relative 'helper'
+require 'logger'
require 'tempfile'
class TestLogger < Test::Unit::TestCase
@@ -13,7 +13,7 @@ class TestLogger < Test::Unit::TestCase
class Log
attr_reader :label, :datetime, :pid, :severity, :progname, :msg
def initialize(line)
- /\A(\w+), \[([^#]*)#(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/ =~ line
+ /\A(\w+), \[([^#]*) #(\d+)\]\s+(\w+) -- (\w*): ([\x0-\xff]*)/ =~ line
@label, @datetime, @pid, @severity, @progname, @msg = $1, $2, $3, $4, $5, $6
end
end
@@ -124,7 +124,7 @@ class TestLogger < Test::Unit::TestCase
dummy = STDERR
logger = Logger.new(dummy)
log = log_add(logger, INFO, "foo")
- assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+ $/, log.datetime)
+ assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+$/, log.datetime)
logger.datetime_format = "%d%b%Y@%H:%M:%S"
log = log_add(logger, INFO, "foo")
assert_match(/^\d\d\w\w\w\d\d\d\d@\d\d:\d\d:\d\d$/, log.datetime)
@@ -203,7 +203,7 @@ class TestLogger < Test::Unit::TestCase
# default
logger = Logger.new(STDERR)
log = log_add(logger, INFO, "foo")
- assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+ $/, log.datetime)
+ assert_match(/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d.\s*\d+$/, log.datetime)
# config
logger = Logger.new(STDERR, datetime_format: "%d%b%Y@%H:%M:%S")
log = log_add(logger, INFO, "foo")
diff --git a/test/logger/test_logperiod.rb b/test/logger/test_logperiod.rb
index 3c5cbbcd9b..6e6e5e9533 100644
--- a/test/logger/test_logperiod.rb
+++ b/test/logger/test_logperiod.rb
@@ -1,6 +1,6 @@
# coding: US-ASCII
# frozen_string_literal: false
-require_relative 'helper'
+require 'logger'
require 'time'
class TestLogPeriod < Test::Unit::TestCase
diff --git a/test/logger/test_severity.rb b/test/logger/test_severity.rb
index 1197e8abb9..e1069c8262 100644
--- a/test/logger/test_severity.rb
+++ b/test/logger/test_severity.rb
@@ -1,8 +1,10 @@
# coding: US-ASCII
# frozen_string_literal: false
-require_relative 'helper'
+require 'logger'
class TestLoggerSeverity < Test::Unit::TestCase
+ include Logger::Severity
+
def test_enum
logger_levels = Logger.constants
levels = ["WARN", "UNKNOWN", "INFO", "FATAL", "DEBUG", "ERROR"]
@@ -23,4 +25,34 @@ class TestLoggerSeverity < Test::Unit::TestCase
assert(logger.level) == Logger::Severity.const_get(level)
end
end
+
+ def test_thread_local_level
+ logger = Logger.new(nil)
+ logger.level = INFO # default level
+ other = Logger.new(nil)
+ other.level = ERROR # default level
+
+ assert_equal(other.level, ERROR)
+ logger.with_level(:WARN) do
+ assert_equal(other.level, ERROR)
+ assert_equal(logger.level, WARN)
+
+ logger.with_level(DEBUG) do # verify reentrancy
+ assert_equal(logger.level, DEBUG)
+
+ Thread.new do
+ assert_equal(logger.level, INFO)
+ logger.with_level(:WARN) do
+ assert_equal(other.level, ERROR)
+ assert_equal(logger.level, WARN)
+ end
+ assert_equal(logger.level, INFO)
+ end.join
+
+ assert_equal(logger.level, DEBUG)
+ end
+ assert_equal(logger.level, WARN)
+ end
+ assert_equal(logger.level, INFO)
+ end
end