@@ -69,6 +69,20 @@ class BroadcastLoggerTest < TestCase
6969 assert_equal ::Logger ::FATAL , log2 . local_level
7070 end
7171
72+ test "#silence does not break custom loggers" do
73+ new_logger = FakeLogger . new
74+ custom_logger = CustomLogger . new
75+ custom_logger . extend ( Logger . broadcast ( new_logger ) )
76+
77+ custom_logger . silence do
78+ custom_logger . error "from error"
79+ custom_logger . unknown "from unknown"
80+ end
81+
82+ assert_equal [ [ ::Logger ::ERROR , "from error" , nil ] , [ ::Logger ::UNKNOWN , "from unknown" , nil ] ] , custom_logger . adds
83+ assert_equal [ [ ::Logger ::ERROR , "from error" , nil ] , [ ::Logger ::UNKNOWN , "from unknown" , nil ] ] , new_logger . adds
84+ end
85+
7286 test "#silence silences all loggers below the default level of ERROR" do
7387 logger . silence do
7488 logger . debug "test"
@@ -98,9 +112,7 @@ class BroadcastLoggerTest < TestCase
98112 assert_equal [ [ ::Logger ::FATAL , "seen" , nil ] ] , log2 . adds
99113 end
100114
101- class FakeLogger
102- include LoggerSilence
103-
115+ class CustomLogger
104116 attr_reader :adds , :closed , :chevrons
105117 attr_accessor :level , :progname , :formatter , :local_level
106118
@@ -150,5 +162,9 @@ def close
150162 @closed = true
151163 end
152164 end
165+
166+ class FakeLogger < CustomLogger
167+ include LoggerSilence
168+ end
153169 end
154170end
0 commit comments