Before: let g:ale_buffer_info = { \ bufnr('%'): { \ 'loclist': [ \ { \ 'lnum': 1, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'linter_name': 'eslint', \ 'nr': -1, \ 'type': 'E', \ 'col': 10, \ 'text': 'Missing semicolon. (semi)', \ 'detail': 'Every statement should end with a semicolon' \ }, \ { \ 'lnum': 2, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'linter_name': 'eslint', \ 'nr': -1, \ 'type': 'W', \ 'col': 10, \ 'text': 'Infix operators must be spaced. (space-infix-ops)' \ }, \ { \ 'lnum': 2, \ 'bufnr': bufnr('%'), \ 'vcol': 0, \ 'linter_name': 'eslint', \ 'nr': -1, \ 'type': 'E', \ 'col': 15, \ 'text': 'Missing radix parameter (radix)' \ } \ ], \ }, \} " Turn off other features, we only care about this one feature in this test. let g:ale_set_loclist = 0 let g:ale_set_signs = 0 let g:ale_set_highlights = 0 After: let g:ale_set_loclist = 1 let g:ale_set_signs = 1 let g:ale_set_highlights = 1 unlet! g:output unlet! g:lines let g:ale_buffer_info = {} Given javascript(A Javscript file with warnings/errors): var x = 3 var x = 5*2 + parseInt("10"); Execute(Evaluate the cursor function at line 1): :1 call ale#cursor#EchoCursorWarning() Then(Check the cursor output): redir => g:output silent mess redir END let g:lines = split(g:output, "\n") AssertEqual 'Missing semicolon. (semi)', g:lines[-1] Execute(Evaluate the cursor function at line 2): :2 call ale#cursor#EchoCursorWarning() Then(Check the cursor output): redir => g:output silent mess redir END let g:lines = split(g:output, "\n") AssertEqual 'Infix operators must be spaced. (space-infix-ops)', g:lines[-1] Execute(Evaluate the cursor function later in line 2): :2 normal 16l call ale#cursor#EchoCursorWarning() Then(Check the cursor output): redir => g:output silent mess redir END let g:lines = split(g:output, "\n") AssertEqual 'Missing radix parameter (radix)', g:lines[-1] Execute(Set results for a lint cycle, with the cursor on line 1): :1 call ale#engine#SetResults( \ bufnr('%'), \ g:ale_buffer_info[bufnr('%')].loclist, \) Then(Check the cursor output): redir => g:output silent mess redir END let g:lines = split(g:output, "\n") AssertEqual 'Missing semicolon. (semi)', g:lines[-1] Execute(Simulate leaving insert mode on line 2): :2 normal 16h doautocmd InsertLeave Then(Check the cursor output): redir => g:output silent mess redir END let g:lines = split(g:output, "\n") AssertEqual 'Infix operators must be spaced. (space-infix-ops)', g:lines[-1] Execute(Evaluate the cursor detail function at line 1): :1 call ale#cursor#ShowCursorDetail() Then(Check the cursor output): redir => g:output silent mess redir END AssertEqual "Every statement should end with a semicolon", g:lines[-1] Execute(Evaluate the cursor detail function at line 2): :2 call ale#cursor#ShowCursorDetail() Then(Check the cursor output): redir => g:output silent mess redir END AssertEqual "Infix operators must be spaced. (space-infix-ops)", g:lines[-1]