diff options
author | w0rp <devw0rp@gmail.com> | 2017-10-14 23:22:13 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-10-14 23:22:13 +0100 |
commit | ef495ba32db2b0c21e73e2ef0034de6888854587 (patch) | |
tree | 75b3701d9dbc4d4cdac0c991b921a0dbd776897a /test | |
parent | 010ebc2459d2ce72d8c264737a9faa4ac694dbe5 (diff) | |
download | ale-ef495ba32db2b0c21e73e2ef0034de6888854587.zip |
#904 Do not run linters on :wq or :x
Diffstat (limited to 'test')
-rw-r--r-- | test/test_autocmd_commands.vader | 6 | ||||
-rw-r--r-- | test/test_no_linting_on_write_quit.vader | 71 | ||||
-rw-r--r-- | test/test_quitting_variable.vader | 22 |
3 files changed, 99 insertions, 0 deletions
diff --git a/test/test_autocmd_commands.vader b/test/test_autocmd_commands.vader index 2685f50b..17e3b16d 100644 --- a/test/test_autocmd_commands.vader +++ b/test/test_autocmd_commands.vader @@ -199,6 +199,12 @@ Execute (g:ale_echo_cursor = 1 should bind cursor events): \ 'InsertLeave * call ale#cursor#EchoCursorWarning()', \], CheckAutocmd('ALECursorGroup') +Execute (ALECleanupGroup should include the right commands): + AssertEqual [ + \ 'BufUnload * call ale#engine#Cleanup(str2nr(expand(''<abuf>'')))', + \ 'QuitPre * call ale#events#QuitEvent(str2nr(expand(''<abuf>'')))', + \], CheckAutocmd('ALECleanupGroup') + Execute(Enabling completion should set up autocmd events correctly): let g:ale_completion_enabled = 0 call ale#completion#Enable() diff --git a/test/test_no_linting_on_write_quit.vader b/test/test_no_linting_on_write_quit.vader new file mode 100644 index 00000000..dc78ef75 --- /dev/null +++ b/test/test_no_linting_on_write_quit.vader @@ -0,0 +1,71 @@ +Before: + Save g:ale_echo_cursor + Save g:ale_fix_on_save + Save g:ale_fixers + Save g:ale_lint_on_save + + let g:ale_echo_cursor = 0 + let g:ale_run_synchronously = 1 + + function! TestCallback(buffer, output) + return [{'lnum': 1, 'col': 1, 'text': 'xxx'}] + endfunction + + function AddLine(buffer, lines) abort + return a:lines + ['x'] + endfunction + + let g:ale_fixers = { + \ 'testft': ['AddLine'], + \} + + call ale#linter#Define('testft', { + \ 'name': 'testlinter', + \ 'callback': 'TestCallback', + \ 'executable': 'true', + \ 'command': 'true', + \}) + +Given testft (An empty file): + +After: + Restore + + unlet! g:ale_run_synchronously + unlet! b:ale_quitting + delfunction TestCallback + delfunction AddLine + + call ale#linter#Reset() + call setloclist(0, []) + +Execute(No linting should be done on :wq or :x): + let g:ale_lint_on_save = 1 + let g:ale_fix_on_save = 0 + + " First try just the SaveEvent, to be sure that we set errors in the test. + call ale#events#SaveEvent(bufnr('')) + + AssertEqual 1, len(getloclist(0)) + + " Now try doing it again, but where we run the quit event first. + call setloclist(0, []) + call ale#events#QuitEvent(bufnr('')) + call ale#events#SaveEvent(bufnr('')) + + AssertEqual [], getloclist(0) + +Execute(No linting should be done on :wq or :x after fixing files): + let g:ale_lint_on_save = 0 + let g:ale_fix_on_save = 1 + + call ale#events#SaveEvent(bufnr('')) + + AssertEqual 1, len(getloclist(0)) + + " Now try doing it again, but where we run the quit event first. + call setloclist(0, []) + call ale#events#QuitEvent(bufnr('')) + call ale#events#SaveEvent(bufnr('')) + + AssertEqual [], getloclist(0) diff --git a/test/test_quitting_variable.vader b/test/test_quitting_variable.vader new file mode 100644 index 00000000..80b0a8dd --- /dev/null +++ b/test/test_quitting_variable.vader @@ -0,0 +1,22 @@ +Before: + Save g:ale_enabled + + unlet! b:ale_quitting + let g:ale_enabled = 0 + +After: + Restore + + unlet! b:ale_quitting + +Execute(QuitEvent should set b:ale_quitting to 1): + call ale#events#QuitEvent(bufnr('')) + + AssertEqual 1, b:ale_quitting + +Execute(EnterEvent should set b:ale_quitting to 0): + let b:ale_quitting = 1 + + call ale#events#EnterEvent(bufnr('')) + + AssertEqual 0, b:ale_quitting |