All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
5 Save g:ale_lint_on_save
6 Save g:ale_set_highlights
7 Save g:ale_set_lists_synchronously
9 Save g:ale_set_quickfix
12 let g:ale_run_synchronously = 1
13 let g:ale_set_lists_synchronously = 1
14 " Disable the things we don't need, but leave enabled what we do.
15 let g:ale_echo_cursor = 0
16 let g:ale_set_signs = 0
17 let g:ale_set_quickfix = 0
18 let g:ale_set_loclist = 1
19 let g:ale_set_highlights = 0
20 let g:ale_echo_cursor = 0
22 function! TestCallback(buffer, output)
23 return [{'lnum': 1, 'col': 1, 'text': 'xxx'}]
26 function AddLine(buffer, lines) abort
27 return a:lines + ['x']
31 \ 'testft': ['AddLine'],
34 call ale#linter#PreventLoading('testft')
35 call ale#linter#Define('testft', {
36 \ 'name': 'testlinter',
37 \ 'callback': 'TestCallback',
38 \ 'executable': has('win32') ? 'cmd' : 'true',
42 Given testft (An empty file):
47 unlet! g:ale_run_synchronously
49 delfunction TestCallback
52 call ale#linter#Reset()
53 call setloclist(0, [])
55 Execute(No linting should be done on :wq or :x):
56 let g:ale_lint_on_save = 1
57 let g:ale_fix_on_save = 0
59 " First try just the SaveEvent, to be sure that we set errors in the test.
60 call ale#events#SaveEvent(bufnr(''))
61 call ale#test#FlushJobs()
63 AssertEqual 1, len(ale#test#GetLoclistWithoutNewerKeys())
65 " Now try doing it again, but where we run the quit event first.
66 call setloclist(0, [])
67 call ale#events#QuitEvent(bufnr(''))
68 call ale#events#SaveEvent(bufnr(''))
69 call ale#test#FlushJobs()
71 AssertEqual [], ale#test#GetLoclistWithoutNewerKeys()
73 Execute(No linting should be for :w after :q fails):
74 let g:ale_lint_on_save = 1
75 let g:ale_fix_on_save = 0
77 call ale#events#QuitEvent(bufnr(''))
78 call ale#test#FlushJobs()
80 " Simulate 2 seconds passing.
81 let b:ale_quitting -= 1000
83 call ale#events#SaveEvent(bufnr(''))
84 call ale#test#FlushJobs()
86 AssertEqual 1, len(ale#test#GetLoclistWithoutNewerKeys())
88 Execute(No linting should be done on :wq or :x after fixing files):
89 let g:ale_lint_on_save = 1
90 let g:ale_fix_on_save = 1
92 call ale#events#SaveEvent(bufnr(''))
93 call ale#test#FlushJobs()
95 AssertEqual 1, len(ale#test#GetLoclistWithoutNewerKeys())
97 " Now try doing it again, but where we run the quit event first.
98 call setloclist(0, [])
99 call ale#events#QuitEvent(bufnr(''))
100 call ale#events#SaveEvent(bufnr(''))
101 call ale#test#FlushJobs()
103 AssertEqual [], ale#test#GetLoclistWithoutNewerKeys()
105 Execute(Linting should be done after :q fails and fixing files):
106 let g:ale_lint_on_save = 1
107 let g:ale_fix_on_save = 1
109 call ale#events#QuitEvent(bufnr(''))
110 call ale#test#FlushJobs()
112 " Simulate 2 seconds passing.
113 let b:ale_quitting -= 1000
115 call ale#events#SaveEvent(bufnr(''))
116 call ale#test#FlushJobs()
118 AssertEqual 1, len(ale#test#GetLoclistWithoutNewerKeys())