summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-10-28 19:36:16 +0100
committerw0rp <devw0rp@gmail.com>2017-10-28 19:36:16 +0100
commit5fc2b98b73b74a0d57037683f0c809eac41368f0 (patch)
treec0f1b45cb936c19130d1a91c283d8f310546bd8a /test
parentea3a8e3c62d3051fee9342ece2e04bcd04b392b6 (diff)
downloadale-5fc2b98b73b74a0d57037683f0c809eac41368f0.zip
#817 Add commands for toggling ALE for only the current buffer
Diffstat (limited to 'test')
-rw-r--r--test/test_ale_toggle.vader91
-rw-r--r--test/test_highlight_placement.vader28
2 files changed, 113 insertions, 6 deletions
diff --git a/test/test_ale_toggle.vader b/test/test_ale_toggle.vader
index 733ae35d..d8de398a 100644
--- a/test/test_ale_toggle.vader
+++ b/test/test_ale_toggle.vader
@@ -6,6 +6,9 @@ Before:
let g:ale_set_signs = 1
let g:ale_set_lists_synchronously = 1
+ let g:ale_run_synchronously = 1
+
+ unlet! b:ale_enabled
let g:ale_buffer_info = {}
let g:expected_loclist = [{
@@ -80,6 +83,8 @@ After:
unlet! g:expected_loclist
unlet! g:expected_groups
+ unlet! b:ale_enabled
+ unlet! g:output
call ale#linter#Reset()
@@ -91,12 +96,19 @@ After:
delfunction ToggleTestCallback
delfunction ParseAuGroups
+ call setloclist(0, [])
+ sign unplace *
+ call clearmatches()
+
Given foobar (Some imaginary filetype):
foo
bar
baz
Execute(ALEToggle should reset everything and then run again):
+ " Run this test asynchrously.
+ let g:ale_run_synchronously = 0
+
AssertEqual 'foobar', &filetype
call ale#Lint()
@@ -134,6 +146,9 @@ Execute(ALEToggle should reset everything and then run again):
AssertEqual [{'lnum': 2, 'bufnr': bufnr(''), 'col': 3, 'linter_name': 'testlinter', 'vcol': 0, 'nr': -1, 'type': 'E', 'text': 'foo bar', 'sign_id': 1000001}], g:ale_buffer_info[bufnr('')].loclist
Execute(ALEToggle should skip filename keys and preserve them):
+ " Run this test asynchrously.
+ let g:ale_run_synchronously = 0
+
AssertEqual 'foobar', &filetype
let g:ale_buffer_info['/foo/bar/baz.txt'] = {
@@ -178,9 +193,6 @@ Execute(ALEToggle should skip filename keys and preserve them):
\ get(g:ale_buffer_info, '/foo/bar/baz.txt', {})
Execute(ALEDisable should reset everything and stay disabled):
- " We can just lint sychronously for these tests.
- let g:ale_run_synchronously = 1
-
call ale#Lint()
AssertEqual g:expected_loclist, getloclist(0)
@@ -196,11 +208,80 @@ Execute(ALEDisable should reset everything and stay disabled):
AssertEqual 0, g:ale_enabled
Execute(ALEEnable should enable ALE and lint again):
- " We can just lint sychronously for these tests.
let g:ale_enabled = 0
- let g:ale_run_synchronously = 1
ALEEnable
AssertEqual g:expected_loclist, getloclist(0)
AssertEqual 1, g:ale_enabled
+
+Execute(ALEToggleBuffer should reset everything and then run again):
+ " Run this test asynchrously.
+ let g:ale_run_synchronously = 0
+
+ AssertEqual 'foobar', &filetype
+
+ call ale#Lint()
+ call ale#engine#WaitForJobs(2000)
+
+ " First check that everything is there...
+ AssertEqual g:expected_loclist, getloclist(0)
+ AssertEqual [0, [[2, 1000001, 'ALEErrorSign']]], ale#sign#FindCurrentSigns(bufnr('%'))
+ AssertEqual
+ \ [{'group': 'ALEError', 'pos1': [2, 3, 1]}],
+ \ map(getmatches(), '{''group'': v:val.group, ''pos1'': v:val.pos1}')
+ AssertEqual [{'lnum': 2, 'bufnr': bufnr(''), 'col': 3, 'linter_name': 'testlinter', 'vcol': 0, 'nr': -1, 'type': 'E', 'text': 'foo bar', 'sign_id': 1000001}], g:ale_buffer_info[bufnr('')].loclist
+
+ " Now Toggle ALE off.
+ ALEToggleBuffer
+
+ " Everything should be cleared.
+ Assert !has_key(g:ale_buffer_info, bufnr('')), 'The g:ale_buffer_info Dictionary was not removed'
+ AssertEqual [], getloclist(0), 'The loclist was not cleared'
+ AssertEqual [0, []], ale#sign#FindCurrentSigns(bufnr('%')), 'The signs were not cleared'
+ AssertEqual [], getmatches(), 'The highlights were not cleared'
+
+ " Toggle ALE on, everything should be set up and run again.
+ ALEToggleBuffer
+ call ale#engine#WaitForJobs(2000)
+
+ AssertEqual g:expected_loclist, getloclist(0)
+ AssertEqual [0, [[2, 1000001, 'ALEErrorSign']]], ale#sign#FindCurrentSigns(bufnr('%'))
+ AssertEqual
+ \ [{'group': 'ALEError', 'pos1': [2, 3, 1]}],
+ \ map(getmatches(), '{''group'': v:val.group, ''pos1'': v:val.pos1}')
+ AssertEqual g:expected_groups, ParseAuGroups()
+ AssertEqual [{'lnum': 2, 'bufnr': bufnr(''), 'col': 3, 'linter_name': 'testlinter', 'vcol': 0, 'nr': -1, 'type': 'E', 'text': 'foo bar', 'sign_id': 1000001}], g:ale_buffer_info[bufnr('')].loclist
+
+Execute(ALEDisableBuffer should reset everything and stay disabled):
+ call ale#Lint()
+
+ AssertEqual g:expected_loclist, getloclist(0)
+
+ ALEDisableBuffer
+
+ AssertEqual [], getloclist(0)
+ AssertEqual 0, b:ale_enabled
+
+Execute(ALEEnableBuffer should enable ALE and lint again):
+ let b:ale_enabled = 0
+
+ ALEEnableBuffer
+
+ AssertEqual g:expected_loclist, getloclist(0)
+ AssertEqual 1, b:ale_enabled
+
+Execute(ALEEnableBuffer should complain when ALE is disabled globally):
+ let g:ale_enabled = 0
+ let b:ale_enabled = 0
+
+ redir => g:output
+ ALEEnableBuffer
+ redir END
+
+ AssertEqual [], getloclist(0)
+ AssertEqual 0, b:ale_enabled
+ AssertEqual 0, g:ale_enabled
+ AssertEqual
+ \ 'ALE cannot be enabled locally when disabled globally',
+ \ join(split(g:output))
diff --git a/test/test_highlight_placement.vader b/test/test_highlight_placement.vader
index 2d87b771..6a84e571 100644
--- a/test/test_highlight_placement.vader
+++ b/test/test_highlight_placement.vader
@@ -1,4 +1,6 @@
Before:
+ Save g:ale_enabled
+
function! GenerateResults(buffer, output)
return [
\ {
@@ -43,7 +45,10 @@ Before:
highlight link SomeOtherGroup SpellBad
After:
+ Restore
+
unlet! g:items
+ unlet! b:ale_enabled
delfunction GenerateResults
call ale#linter#Reset()
@@ -206,7 +211,7 @@ Execute(Highlighting should support errors spanning many lines):
\ },
\ ],
\ GetMatchesWithoutIDs()
- \
+
Execute(Highlights should always be cleared when the buffer highlight list is empty):
" Add our highlights and something else.
call matchaddpos('ALEError', [[1, 1, 1]])
@@ -232,3 +237,24 @@ Execute(Highlights should always be cleared when the buffer highlight list is em
\ {'group': 'SomeOtherGroup', 'priority': 10, 'pos1': [1, 1, 1]},
\ ],
\ GetMatchesWithoutIDs()
+
+Execute(Highlights should be cleared when ALE is disabled):
+ let g:ale_enabled = 1
+ call ale#highlight#SetHighlights(bufnr(''), [
+ \ {'bufnr': bufnr(''), 'type': 'E', 'lnum': 1, 'col': 1, 'end_lnum': 10, 'end_col': 3},
+ \])
+
+ let g:ale_enabled = 0
+ call ale#highlight#UpdateHighlights()
+
+ AssertEqual [], GetMatchesWithoutIDs()
+
+ let g:ale_enabled = 1
+ call ale#highlight#SetHighlights(bufnr(''), [
+ \ {'bufnr': bufnr(''), 'type': 'E', 'lnum': 1, 'col': 1, 'end_lnum': 10, 'end_col': 3},
+ \])
+
+ let b:ale_enabled = 0
+ call ale#highlight#UpdateHighlights()
+
+ AssertEqual [], GetMatchesWithoutIDs()