summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-10-14 23:22:13 +0100
committerw0rp <devw0rp@gmail.com>2017-10-14 23:22:13 +0100
commitef495ba32db2b0c21e73e2ef0034de6888854587 (patch)
tree75b3701d9dbc4d4cdac0c991b921a0dbd776897a /test
parent010ebc2459d2ce72d8c264737a9faa4ac694dbe5 (diff)
downloadale-ef495ba32db2b0c21e73e2ef0034de6888854587.zip
#904 Do not run linters on :wq or :x
Diffstat (limited to 'test')
-rw-r--r--test/test_autocmd_commands.vader6
-rw-r--r--test/test_no_linting_on_write_quit.vader71
-rw-r--r--test/test_quitting_variable.vader22
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