Module: Minitest::Assertions
- Defined in:
- lib/minitest-logger.rb
Instance Method Summary collapse
-
#assert_log(expected, msg = nil, options = {}, &block) ⇒ Object
Define new assertion assert_log.
-
#assert_silent_log(msg = nil, options = {}, &block) ⇒ Object
Test for silent log (No messages are returned).
-
#logger_evaluation(log, level = nil, formatter = nil) ⇒ Object
Evaluate block and collect the messages of a logger.
-
#refute_silent_log(msg = nil, options = {}, &block) ⇒ Object
Test for silent log (No messages are returned).
Instance Method Details
#assert_log(expected, msg = nil, options = {}, &block) ⇒ Object
Define new assertion assert_log
Options
Define test logger (:log)
With option :log you can define or replace the logger to test.
It is recommended to define the logger during setup in Minitest::Test.
Define log level (:level)
With option :level you can set an alternative level for the test.
See also #logger_evaluation for more information
Examples
assert_log(" INFO log: Hello World\n"){ @log.info("Hello World") }
assert_log(" INFO log: Hello World\n", :log => @log){ @log.info("Hello World") }
assert_log(" INFO log: Hello World\n", :level => Log4r::INFO){ @log.info("Hello World") }
assert_log(nil, :level => Log4r::WARN){ @log.info("Hello World") }
msg = (msg, E) { diff exp, act }
assert exp == act, msg
Define a formatter (Only Log4r)
If you want to test with a special formatter you can define it with this parameter.
The default can be set with #formatter and during the setup.
191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'lib/minitest-logger.rb', line 191 def assert_log(expected, msg=nil, = {}, &block) if msg.is_a?(Hash) = msg msg = nil end logtext = logger_evaluation([:log] || @log, [:level], [:formatter] || @formatter, &block) err_msg = Regexp === expected ? :assert_match : :assert_equal send err_msg, expected, logtext, (msg) { "Logger #{[:log] || @log} logs unexpected messages" } end |
#assert_silent_log(msg = nil, options = {}, &block) ⇒ Object
Test for silent log (No messages are returned).
For details on options see #assert_log and #logger_evaluation
210 211 212 213 214 215 216 217 218 |
# File 'lib/minitest-logger.rb', line 210 def assert_silent_log(msg=nil, = {}, &block) if msg.is_a?(Hash) = msg msg = nil end logtext = logger_evaluation([:log] || @log, [:level], &block) assert !logtext, (msg) { "Expected #{[:log] || @log} to be silent, but returned\n #{mu_pp(logtext)}" } end |
#logger_evaluation(log, level = nil, formatter = nil) ⇒ Object
Evaluate block and collect the messages of a logger.
Argument level:
This enables you to test less messages (e.g. only errors) without the need of adapt the logger itself.
Attention: The level of the logger has a higher priority the the level of the outputter. If the logger logs no DEBUG-messages, the output will also be empty, independent of the value of this parameter.
Argument formatter
If you want to test with a special formatter you can define it with this parameter.
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/minitest-logger.rb', line 138 def logger_evaluation(log, level=nil, formatter = nil) raise ArgumentError unless defined? log raise ArgumentError unless block_given? case log.class.to_s when 'Log4r::Logger' log.outputters << outputter = Log4r::StringOutputter.new('stringoutputter') outputter.level = level if level outputter.formatter = formatter if formatter when 'Logger' log.(level) end yield #call block to get messages case log.class.to_s when 'Log4r::Logger' logtext = outputter.flush when 'Logger' logtext = log.() end return logtext end |
#refute_silent_log(msg = nil, options = {}, &block) ⇒ Object
Test for silent log (No messages are returned)
For details on options see #assert_log and #logger_evaluation
224 225 226 227 228 229 230 231 232 |
# File 'lib/minitest-logger.rb', line 224 def refute_silent_log(msg=nil, = {}, &block) if msg.is_a?(Hash) = msg msg = nil end logtext = logger_evaluation([:log] || @log, [:level], &block) assert logtext, (msg) { "Expected #{[:log] || @log} not to be silent" } end |