howl.log
after_each -> log.clear! app.window = nil
is exported globally as `log`
assert.equal type(_G.log), 'table'
warn() is the same as warning()
assert.same log.warn, log.warning
(when howl.app.window is available and showing)
local method before_each -> method = spy.new -> true app.window = visible: true, command_line: {}, status: [m]: method after_each -> app.window = nil
sends the message to howl.app.window.status\\' .. m .. '() if available
log[m] 'message' assert.spy(method).was.called_with match.is_ref(app.window.status), 'message'
only propagates the first line of the message
log[m] 'message\nline2\nline3' assert.spy(method).was.called_with match.is_ref(app.window.status), 'message'
removes any location info before propagating
log[m] '[string "../foo/bar.lua"]:32: juicy bit' assert.spy(method).was.called_with match.is_ref(app.window.status), 'juicy bit'
(when howl.app.window is available and showing)
local method before_each -> method = spy.new -> true app.window = visible: true, command_line: {}, status: [m]: method after_each -> app.window = nil
sends the message to howl.app.window.status\\' .. m .. '() if available
log[m] 'message' assert.spy(method).was.called_with match.is_ref(app.window.status), 'message'
only propagates the first line of the message
log[m] 'message\nline2\nline3' assert.spy(method).was.called_with match.is_ref(app.window.status), 'message'
removes any location info before propagating
log[m] '[string "../foo/bar.lua"]:32: juicy bit' assert.spy(method).was.called_with match.is_ref(app.window.status), 'juicy bit'
(when howl.app.window is available and showing)
local method before_each -> method = spy.new -> true app.window = visible: true, command_line: {}, status: [m]: method after_each -> app.window = nil
sends the message to howl.app.window.status\\' .. m .. '() if available
log[m] 'message' assert.spy(method).was.called_with match.is_ref(app.window.status), 'message'
only propagates the first line of the message
log[m] 'message\nline2\nline3' assert.spy(method).was.called_with match.is_ref(app.window.status), 'message'
removes any location info before propagating
log[m] '[string "../foo/bar.lua"]:32: juicy bit' assert.spy(method).was.called_with match.is_ref(app.window.status), 'juicy bit'
book keeping
.entries is a list of the last log entries
log.error 'my error' assert.equal #log.entries, 1 assert.same log.entries[1], { essentials: 'my error' message: 'my error' level: 'error' }
.last_error points to the last error logged
assert.is_nil log.last_error log.error 'foo' assert.equal 'foo', log.last_error.message log.error 'bar' assert.equal 'bar', log.last_error.message
defines a "max_log_entries" config variable, defaulting to 1000
assert.not_nil config.definitions.max_log_entries assert.equal config.max_log_entries, 1000
retains at most <max_log_entries> of the last entries
config.max_log_entries = 1 for i = 1,10 log.error 'my error ' .. i assert.equal #log.entries, 1 assert.same log.entries[1], { essentials: 'my error 10' message: 'my error 10' level: 'error' }
.clear() clears all log entries
log.error 'my error' log.clear! assert.equal #log.entries, 0
(when a message is logged)
local append, trim log.clear! before_each -> append = spy.new -> true trim = spy.new -> true signal.connect 'log-entry-appended', append signal.connect 'log-trimmed', trim after_each -> signal.disconnect 'log-entry-appended', append signal.disconnect 'log-trimmed', trim log.clear! append = nil trim = nil
emits append signals
log.info 'test' assert.spy(append).was.called_with essentials: 'test' level: 'info' message: 'test'
emits trim signals
log.info 'info' log.clear! assert.spy(trim).was.called_with size: 0
