Include: include/setup.vader

Execute (neomake#log#debug writes to logfile always):
  Save g:neomake_verbose, g:neomake_logfile
  let neomake_verbose = 0
  let g:neomake_logfile = tempname()
  call neomake#log#debug('msg1.')
  call neomake#log#debug('msg2.')
  if has('patch-7.4.503')
    let logfile_msg = readfile(g:neomake_logfile)[1]
  else
    let logfile_msg = readfile(g:neomake_logfile)[0]
  endif
  " Also allow for small delay (on CI).
  Assert logfile_msg =~# '\v\d\d:\d\d:\d\d \d+ \[D (\+0.0\d|     )\] msg2.$', 'unexpected msg: '.logfile_msg

  call neomake#log#debug('msg3.')
  sleep 10m
  call neomake#log#debug('msg4.', {})
  let logfile_msg = readfile(g:neomake_logfile)[-1]
  Assert logfile_msg =~# '\v\d\d:\d\d:\d\d \d+ \[D \+0.\d\d\] \[-.-:-:\d+\] msg4.$', 'Message does not match: '.logfile_msg

Execute (neomake#log#debug unsets logfile in case of errors):
  Save g:neomake_logfile
  let g:neomake_logfile = '/does/not/exist'
  call neomake#log#debug('msg1.')
  AssertNeomakeMessage '\vError when trying to write to logfile /does/not/exist: Vim\(call\):E.*.  Unsetting g:neomake_logfile.', 0
  Assert !exists('g:neomake_logfile'), 'g:neomake_logfile has been unset.'

Execute (neomake#log#debug is picky about punctuation):
  call neomake#log#debug('msg1')
  AssertEqual g:neomake_test_errors, ['Log msg does not end with punctuation: "msg1".']
  let g:neomake_test_errors = []

Execute (neomake#log#debug throws with missing make_options in tests):
  " Non-existing make_id should not make it verbose.
  AssertEqual g:neomake_test_errors, []
  call neomake#log#debug('msg1.', {'make_id': -42})
  AssertEqual len(g:neomake_test_errors), 1
  Assert g:neomake_test_errors[0] =~# '\v^GetMakeOptions failed: Vim\(let\):E716: Key not present in Dictionary: -42 \(in function .*\)$'
  let g:neomake_test_errors = []