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

propages the message to howl.app.window.status\\' .. m .. '() if available

method = spy.new -> true
app.window = readline: {}, status: [m]: method
log[m] 'message'
assert.spy(method).was.called_with app.window.status, 'message'

only propagates the first line of the message

method = spy.new -> true
app.window = readline: {}, status: [m]: method
log[m] 'message\nline2\nline3'
assert.spy(method).was.called_with app.window.status, 'message'

propages the message to howl.app.window.status\\' .. m .. '() if available

method = spy.new -> true
app.window = readline: {}, status: [m]: method
log[m] 'message'
assert.spy(method).was.called_with app.window.status, 'message'

only propagates the first line of the message

method = spy.new -> true
app.window = readline: {}, status: [m]: method
log[m] 'message\nline2\nline3'
assert.spy(method).was.called_with app.window.status, 'message'

propages the message to howl.app.window.status\\' .. m .. '() if available

method = spy.new -> true
app.window = readline: {}, status: [m]: method
log[m] 'message'
assert.spy(method).was.called_with app.window.status, 'message'

only propagates the first line of the message

method = spy.new -> true
app.window = readline: {}, status: [m]: method
log[m] 'message\nline2\nline3'
assert.spy(method).was.called_with app.window.status, 'message'

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], {
  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], {
  message: 'my error 10'
  level: 'error'
}

.clear() clears all log entries

log.error 'my error'
log.clear!
assert.equal #log.entries, 0