Given javascript (Some JavaScript with problems): var y = 3+3; var y = 3 Before: sign unplace * let g:actual_sign_list = [] let g:expected_sign_list = [ \ ['1', 'ALEWarningSign'], \ ['2', 'ALEErrorSign'], \] function! g:CollectSigns() redir => l:output silent exec 'sign place' redir END for l:line in split(l:output, "\n") let l:match = matchlist(l:line, 'line=\(\d\+\).*name=\(ALE[a-zA-Z]\+\)') if len(l:match) > 0 call add(g:actual_sign_list, [l:match[1], l:match[2]]) endif endfor endfunction After: sign unplace * let g:ale_buffer_info = {} delfunction g:CollectSigns unlet g:actual_sign_list unlet g:expected_sign_list Execute(The signs should be updated after linting is done): call ale#Lint() call ale#engine#WaitForJobs(2000) call g:CollectSigns() AssertEqual g:expected_sign_list, g:actual_sign_list