mirror of
https://github.com/dense-analysis/ale.git
synced 2026-01-01 09:03:29 +08:00
Merge branch 'master' into dhall
This commit is contained in:
@@ -8,6 +8,8 @@ Before:
|
||||
let b:bin_dir = has('win32') ? 'Scripts' : 'bin'
|
||||
let b:command_tail = ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n %s'
|
||||
|
||||
GivenCommandOutput ['pylint 2.3.0']
|
||||
|
||||
After:
|
||||
unlet! b:bin_dir
|
||||
unlet! b:executable
|
||||
@@ -17,26 +19,33 @@ After:
|
||||
|
||||
Execute(The pylint callbacks should return the correct default values):
|
||||
AssertLinter 'pylint',
|
||||
\ ale#path#CdString(expand('#' . bufnr('') . ':p:h'))
|
||||
\ . ale#Escape('pylint') . ' ' . b:command_tail
|
||||
\ ale#path#CdString(expand('%:p:h'))
|
||||
\ . ale#Escape('pylint') . b:command_tail
|
||||
|
||||
Execute(Pylint should run with the --from-stdin in new enough versions):
|
||||
GivenCommandOutput ['pylint 2.4.0']
|
||||
|
||||
AssertLinter 'pylint',
|
||||
\ ale#path#CdString(expand('%:p:h'))
|
||||
\ . ale#Escape('pylint') . b:command_tail[:-3] . '--from-stdin %s'
|
||||
|
||||
Execute(The option for disabling changing directories should work):
|
||||
let g:ale_python_pylint_change_directory = 0
|
||||
|
||||
AssertLinter 'pylint', ale#Escape('pylint') . ' ' . b:command_tail
|
||||
AssertLinter 'pylint', ale#Escape('pylint') . b:command_tail
|
||||
|
||||
Execute(The pylint executable should be configurable, and escaped properly):
|
||||
let g:ale_python_pylint_executable = 'executable with spaces'
|
||||
|
||||
AssertLinter 'executable with spaces',
|
||||
\ ale#path#CdString(expand('#' . bufnr('') . ':p:h'))
|
||||
\ . ale#Escape('executable with spaces') . ' ' . b:command_tail
|
||||
\ ale#path#CdString(expand('%:p:h'))
|
||||
\ . ale#Escape('executable with spaces') . b:command_tail
|
||||
|
||||
Execute(The pylint command callback should let you set options):
|
||||
let g:ale_python_pylint_options = '--some-option'
|
||||
|
||||
AssertLinter 'pylint',
|
||||
\ ale#path#CdString(expand('#' . bufnr('') . ':p:h'))
|
||||
\ ale#path#CdString(expand('%:p:h'))
|
||||
\ . ale#Escape('pylint') . ' --some-option' . b:command_tail
|
||||
|
||||
Execute(The pylint callbacks shouldn't detect virtualenv directories where they don't exist):
|
||||
@@ -44,7 +53,7 @@ Execute(The pylint callbacks shouldn't detect virtualenv directories where they
|
||||
|
||||
AssertLinter 'pylint',
|
||||
\ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/no_virtualenv/subdir'))
|
||||
\ . ale#Escape('pylint') . ' ' . b:command_tail
|
||||
\ . ale#Escape('pylint') . b:command_tail
|
||||
|
||||
Execute(The pylint callbacks should detect virtualenv directories):
|
||||
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
|
||||
@@ -55,7 +64,7 @@ Execute(The pylint callbacks should detect virtualenv directories):
|
||||
|
||||
AssertLinter b:executable,
|
||||
\ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/subdir'))
|
||||
\ . ale#Escape(b:executable) . ' ' . b:command_tail
|
||||
\ . ale#Escape(b:executable) . b:command_tail
|
||||
|
||||
Execute(You should able able to use the global pylint instead):
|
||||
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
|
||||
@@ -63,7 +72,7 @@ Execute(You should able able to use the global pylint instead):
|
||||
|
||||
AssertLinter 'pylint',
|
||||
\ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/subdir'))
|
||||
\ . ale#Escape('pylint') . ' ' . b:command_tail
|
||||
\ . ale#Escape('pylint') . b:command_tail
|
||||
|
||||
Execute(Setting executable to 'pipenv' appends 'run pylint'):
|
||||
let g:ale_python_pylint_executable = 'path/to/pipenv'
|
||||
@@ -71,7 +80,7 @@ Execute(Setting executable to 'pipenv' appends 'run pylint'):
|
||||
AssertLinter 'path/to/pipenv',
|
||||
\ ale#path#CdString(expand('#' . bufnr('') . ':p:h'))
|
||||
\ . ale#Escape('path/to/pipenv') . ' run pylint'
|
||||
\ . ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n %s'
|
||||
\ . ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n %s'
|
||||
|
||||
Execute(Pipenv is detected when python_pylint_auto_pipenv is set):
|
||||
let g:ale_python_pylint_auto_pipenv = 1
|
||||
@@ -80,4 +89,4 @@ Execute(Pipenv is detected when python_pylint_auto_pipenv is set):
|
||||
AssertLinter 'pipenv',
|
||||
\ ale#path#CdString(expand('#' . bufnr('') . ':p:h'))
|
||||
\ . ale#Escape('pipenv') . ' run pylint'
|
||||
\ . ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n %s'
|
||||
\ . ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n %s'
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('vim', 'vint')
|
||||
let b:command_tail = (has('nvim') ? ' --enable-neovim' : '')
|
||||
\ . ' -f "{file_path}:{line_number}:{column_number}: {severity}: {policy_name} - {description} (see {reference})" %t'
|
||||
let b:common_flags = (has('nvim') ? ' --enable-neovim' : '')
|
||||
\ . ' -f "{file_path}:{line_number}:{column_number}: {severity}: {policy_name} - {description} (see {reference})"'
|
||||
|
||||
After:
|
||||
unlet! b:bin_dir
|
||||
unlet! b:executable
|
||||
unlet! b:common_flags
|
||||
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(The default command should be correct):
|
||||
AssertLinter 'vint', [
|
||||
\ ale#Escape('vint') .' --version',
|
||||
\ ale#Escape('vint') .' -s --no-color' . b:command_tail,
|
||||
\ ale#Escape('vint') .' -s --no-color' . b:common_flags . ' %t',
|
||||
\]
|
||||
|
||||
Execute(The executable should be configurable):
|
||||
@@ -19,5 +19,16 @@ Execute(The executable should be configurable):
|
||||
|
||||
AssertLinter 'foobar', [
|
||||
\ ale#Escape('foobar') .' --version',
|
||||
\ ale#Escape('foobar') .' -s --no-color' . b:command_tail,
|
||||
\ ale#Escape('foobar') .' -s --no-color' . b:common_flags . ' %t',
|
||||
\]
|
||||
|
||||
Execute(The --no-color flag should not be used for older Vint versions):
|
||||
GivenCommandOutput ['v0.3.5']
|
||||
|
||||
AssertLinter 'vint', ale#Escape('vint') .' -s' . b:common_flags . ' %t'
|
||||
|
||||
Execute(--stdin-display-name should be used in newer versions):
|
||||
GivenCommandOutput ['v0.4.0']
|
||||
|
||||
AssertLinter 'vint', ale#Escape('vint') .' -s --no-color' . b:common_flags
|
||||
\ . ' --stdin-display-name %s -'
|
||||
|
||||
35
test/completion/test_complete_events.vader
Normal file
35
test/completion/test_complete_events.vader
Normal file
@@ -0,0 +1,35 @@
|
||||
Before:
|
||||
let g:complete_post_triggered = 0
|
||||
|
||||
augroup VaderTest
|
||||
autocmd!
|
||||
autocmd User ALECompletePost let g:complete_post_triggered = 1
|
||||
augroup END
|
||||
|
||||
After:
|
||||
unlet! b:ale_completion_info
|
||||
unlet! g:complete_post_triggered
|
||||
|
||||
augroup VaderTest
|
||||
autocmd!
|
||||
augroup END
|
||||
|
||||
augroup! VaderTest
|
||||
|
||||
Execute(ALECompletePost should not be triggered when completion is cancelled):
|
||||
call ale#completion#HandleUserData({})
|
||||
|
||||
Assert !g:complete_post_triggered
|
||||
|
||||
Execute(ALECompletePost should not be triggered when tools other than ALE insert completions):
|
||||
call ale#completion#HandleUserData({'user_data': ''})
|
||||
call ale#completion#HandleUserData({'user_data': '{}'})
|
||||
|
||||
Assert !g:complete_post_triggered
|
||||
|
||||
Execute(ALECompletePost should be triggered when ALE inserts completions):
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': json_encode({'_ale_completion_item': 1}),
|
||||
\})
|
||||
|
||||
Assert g:complete_post_triggered
|
||||
@@ -407,41 +407,75 @@ Execute(HandleUserData should call ale#code_action#HandleCodeAction):
|
||||
AssertEqual g:handle_code_action_called, 0
|
||||
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': ''
|
||||
\ 'user_data': ''
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 0
|
||||
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': '{}'
|
||||
\ 'user_data': json_encode({}),
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 0
|
||||
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': '{"codeActions": []}'
|
||||
\ 'user_data': json_encode({
|
||||
\ '_ale_completion_item': 1,
|
||||
\ 'code_actions': [],
|
||||
\ }),
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 0
|
||||
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': '{"codeActions": [{"description":"", "changes": []}]}'
|
||||
\ 'user_data': json_encode({
|
||||
\ '_ale_completion_item': 1,
|
||||
\ 'code_actions': [
|
||||
\ {'description': '', 'changes': []},
|
||||
\ ],
|
||||
\ }),
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 1
|
||||
|
||||
let b:ale_completion_info = {'source': 'ale-automatic'}
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': '{"codeActions": [{"description":"", "changes": []}]}'
|
||||
\ 'user_data': json_encode({
|
||||
\ '_ale_completion_item': 1,
|
||||
\ 'code_actions': [
|
||||
\ {'description': '', 'changes': []},
|
||||
\ ],
|
||||
\ }),
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 2
|
||||
|
||||
let b:ale_completion_info = {'source': 'ale-callback'}
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': '{"codeActions": [{"description":"", "changes": []}]}'
|
||||
\ 'user_data': json_encode({
|
||||
\ '_ale_completion_item': 1,
|
||||
\ 'code_actions': [
|
||||
\ {'description': '', 'changes': []},
|
||||
\ ],
|
||||
\ }),
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 3
|
||||
|
||||
let b:ale_completion_info = {'source': 'ale-omnifunc'}
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': json_encode({
|
||||
\ '_ale_completion_item': 1,
|
||||
\ 'code_actions': [
|
||||
\ {'description': '', 'changes': []},
|
||||
\ ],
|
||||
\ }),
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 4
|
||||
|
||||
Execute(ale#code_action#HandleCodeAction should not be called when when source is not ALE):
|
||||
call MockHandleCodeAction()
|
||||
let b:ale_completion_info = {'source': 'syntastic'}
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': '{"codeActions": [{"description":"", "changes": []}]}'
|
||||
\ 'user_data': json_encode({
|
||||
\ '_ale_completion_item': 1,
|
||||
\ 'code_actions': [
|
||||
\ {'description': '', 'changes': []},
|
||||
\ ],
|
||||
\ }),
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 0
|
||||
|
||||
@@ -12,34 +12,34 @@ After:
|
||||
Execute(Should handle Rust completion results correctly):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {'word': 'new', 'menu': 'pub fn new() -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'with_capacity', 'menu': 'pub fn with_capacity(capacity: usize) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_utf8', 'menu': 'pub fn from_utf8(vec: Vec<u8>) -> Result<String, FromUtf8Error>', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_utf8_lossy', 'menu': 'pub fn from_utf8_lossy<''a>(v: &''a [u8]) -> Cow<''a, str>', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_utf16', 'menu': 'pub fn from_utf16(v: &[u16]) -> Result<String, FromUtf16Error>', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_utf16_lossy', 'menu': 'pub fn from_utf16_lossy(v: &[u16]) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_raw_parts', 'menu': 'pub unsafe fn from_raw_parts(buf: *mut u8, length: usize, capacity: usize) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_utf8_unchecked', 'menu': 'pub unsafe fn from_utf8_unchecked(bytes: Vec<u8>) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = char>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = &''a char>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = &''a str>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = String>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = Cow<''a, str>>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'Searcher', 'menu': 'type Searcher = <&''b str as Pattern<''a>>::Searcher;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'default', 'menu': 'fn default() -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'Output', 'menu': 'type Output = String;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'Target', 'menu': 'type Target = str;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'Err', 'menu': 'type Err = ParseError;', 'info': '', 'kind': 't', 'icase': 1},
|
||||
\ {'word': 'from_str', 'menu': 'fn from_str(s: &str) -> Result<String, ParseError>', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from', 'menu': 'fn from(s: &''a str) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from', 'menu': 'fn from(s: Box<str>) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'from', 'menu': 'fn from(s: Cow<''a, str>) -> String', 'info': '', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'new', 'menu': 'pub fn new() -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'with_capacity', 'menu': 'pub fn with_capacity(capacity: usize) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_utf8', 'menu': 'pub fn from_utf8(vec: Vec<u8>) -> Result<String, FromUtf8Error>', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_utf8_lossy', 'menu': 'pub fn from_utf8_lossy<''a>(v: &''a [u8]) -> Cow<''a, str>', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_utf16', 'menu': 'pub fn from_utf16(v: &[u16]) -> Result<String, FromUtf16Error>', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_utf16_lossy', 'menu': 'pub fn from_utf16_lossy(v: &[u16]) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_raw_parts', 'menu': 'pub unsafe fn from_raw_parts(buf: *mut u8, length: usize, capacity: usize) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_utf8_unchecked', 'menu': 'pub unsafe fn from_utf8_unchecked(bytes: Vec<u8>) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = char>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = &''a char>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = &''a str>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = String>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_iter', 'menu': 'fn from_iter<I: IntoIterator<Item = Cow<''a, str>>>(iter: I) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Searcher', 'menu': 'type Searcher = <&''b str as Pattern<''a>>::Searcher;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'default', 'menu': 'fn default() -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Output', 'menu': 'type Output = String;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Output', 'menu': 'type Output = str;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Target', 'menu': 'type Target = str;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'Err', 'menu': 'type Err = ParseError;', 'info': '', 'kind': 't', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from_str', 'menu': 'fn from_str(s: &str) -> Result<String, ParseError>', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from', 'menu': 'fn from(s: &''a str) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from', 'menu': 'fn from(s: Box<str>) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'from', 'menu': 'fn from(s: Cow<''a, str>) -> String', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\],
|
||||
\ ale#completion#ParseLSPCompletions({
|
||||
\ "jsonrpc":"2.0",
|
||||
@@ -195,7 +195,7 @@ Execute(Should handle Python completion results correctly):
|
||||
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {'word': 'what', 'menu': 'example-python-project.bar.Bar', 'info': "what()\n\n", 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'what', 'menu': 'example-python-project.bar.Bar', 'info': "what()\n\n", 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ ],
|
||||
\ ale#completion#ParseLSPCompletions({
|
||||
\ "jsonrpc":"2.0",
|
||||
@@ -399,7 +399,7 @@ Execute(Should handle Python completion results correctly):
|
||||
\ }
|
||||
\ })
|
||||
|
||||
Execute(Should handle Python completion results correctly):
|
||||
Execute(Should handle extra Python completion results correctly):
|
||||
let b:ale_completion_info = {
|
||||
\ 'completion_filter': 'ale#completion#python#CompletionItemFilter',
|
||||
\ 'prefix': 'mig',
|
||||
@@ -407,8 +407,8 @@ Execute(Should handle Python completion results correctly):
|
||||
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {'word': 'migrations', 'menu': 'xxx', 'info': 'migrations', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'MigEngine', 'menu': 'xxx', 'info': 'mig engine', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'migrations', 'menu': 'xxx', 'info': 'migrations', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ {'word': 'MigEngine', 'menu': 'xxx', 'info': 'mig engine', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ ],
|
||||
\ ale#completion#ParseLSPCompletions({
|
||||
\ 'jsonrpc': '2.0',
|
||||
@@ -441,7 +441,7 @@ Execute(Should handle Python completion results correctly):
|
||||
Execute(Should handle missing keys):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {'word': 'x', 'menu': '', 'info': '', 'kind': 'v', 'icase': 1},
|
||||
\ {'word': 'x', 'menu': '', 'info': '', 'kind': 'v', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ ],
|
||||
\ ale#completion#ParseLSPCompletions({
|
||||
\ 'jsonrpc': '2.0',
|
||||
@@ -459,7 +459,7 @@ Execute(Should handle missing keys):
|
||||
Execute(Should handle documentation in the markdown format):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {'word': 'migrations', 'menu': 'xxx', 'info': 'Markdown documentation', 'kind': 'f', 'icase': 1},
|
||||
\ {'word': 'migrations', 'menu': 'xxx', 'info': 'Markdown documentation', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ ],
|
||||
\ ale#completion#ParseLSPCompletions({
|
||||
\ 'jsonrpc': '2.0',
|
||||
@@ -483,7 +483,7 @@ Execute(Should handle documentation in the markdown format):
|
||||
Execute(Should handle completion messages with textEdit objects):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {'word': 'next_callback', 'menu': 'PlayTimeCallback', 'info': '', 'kind': 'v', 'icase': 1},
|
||||
\ {'word': 'next_callback', 'menu': 'PlayTimeCallback', 'info': '', 'kind': 'v', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ ],
|
||||
\ ale#completion#ParseLSPCompletions({
|
||||
\ 'id': 226,
|
||||
@@ -514,7 +514,7 @@ Execute(Should handle completion messages with textEdit objects):
|
||||
Execute(Should handle completion messages with the deprecated insertText attribute):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {'word': 'next_callback', 'menu': 'PlayTimeCallback', 'info': '', 'kind': 'v', 'icase': 1},
|
||||
\ {'word': 'next_callback', 'menu': 'PlayTimeCallback', 'info': '', 'kind': 'v', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\ ],
|
||||
\ ale#completion#ParseLSPCompletions({
|
||||
\ 'id': 226,
|
||||
@@ -547,7 +547,8 @@ Execute(Should handle completion messages with additionalTextEdits when ale_comp
|
||||
\ 'kind': 'v',
|
||||
\ 'icase': 1,
|
||||
\ 'user_data': json_encode({
|
||||
\ 'codeActions': [
|
||||
\ '_ale_completion_item': 1,
|
||||
\ 'code_actions': [
|
||||
\ {
|
||||
\ 'description': 'completion',
|
||||
\ 'changes': [
|
||||
@@ -658,6 +659,7 @@ Execute(Should still handle completion messages with empty additionalTextEdits w
|
||||
\ 'info': '',
|
||||
\ 'kind': 'v',
|
||||
\ 'icase': 1,
|
||||
\ 'user_data': json_encode({'_ale_completion_item': 1}),
|
||||
\ }
|
||||
\ ],
|
||||
\ ale#completion#ParseLSPCompletions({
|
||||
|
||||
@@ -90,6 +90,7 @@ Execute(TypeScript completion details responses should be parsed correctly):
|
||||
\ 'info': '',
|
||||
\ 'kind': 'v',
|
||||
\ 'icase': 1,
|
||||
\ 'user_data': json_encode({'_ale_completion_item': 1}),
|
||||
\ 'dup': g:ale_completion_autoimport,
|
||||
\ },
|
||||
\ {
|
||||
@@ -98,6 +99,7 @@ Execute(TypeScript completion details responses should be parsed correctly):
|
||||
\ 'info': 'foo bar baz',
|
||||
\ 'kind': 'v',
|
||||
\ 'icase': 1,
|
||||
\ 'user_data': json_encode({'_ale_completion_item': 1}),
|
||||
\ 'dup': g:ale_completion_autoimport,
|
||||
\ },
|
||||
\ {
|
||||
@@ -106,6 +108,7 @@ Execute(TypeScript completion details responses should be parsed correctly):
|
||||
\ 'info': '',
|
||||
\ 'kind': 'v',
|
||||
\ 'icase': 1,
|
||||
\ 'user_data': json_encode({'_ale_completion_item': 1}),
|
||||
\ 'dup': g:ale_completion_autoimport,
|
||||
\ },
|
||||
\ ],
|
||||
@@ -179,7 +182,8 @@ Execute(Entries without details should be included in the responses):
|
||||
\ 'kind': 'v',
|
||||
\ 'icase': 1,
|
||||
\ 'user_data': json_encode({
|
||||
\ 'codeActions': [{
|
||||
\ '_ale_completion_item': 1,
|
||||
\ 'code_actions': [{
|
||||
\ 'description': 'import { def } from "./Foo";',
|
||||
\ 'changes': [],
|
||||
\ }],
|
||||
@@ -192,6 +196,7 @@ Execute(Entries without details should be included in the responses):
|
||||
\ 'info': 'foo bar baz',
|
||||
\ 'kind': 'v',
|
||||
\ 'icase': 1,
|
||||
\ 'user_data': json_encode({'_ale_completion_item': 1}),
|
||||
\ 'dup': g:ale_completion_autoimport,
|
||||
\ },
|
||||
\ {
|
||||
@@ -199,6 +204,7 @@ Execute(Entries without details should be included in the responses):
|
||||
\ 'menu': '',
|
||||
\ 'info': '',
|
||||
\ 'kind': 'v',
|
||||
\ 'user_data': json_encode({'_ale_completion_item': 1}),
|
||||
\ 'icase': 1,
|
||||
\ },
|
||||
\ ],
|
||||
@@ -260,7 +266,8 @@ Execute(Default imports should be handled correctly):
|
||||
\ 'kind': 't',
|
||||
\ 'icase': 1,
|
||||
\ 'user_data': json_encode({
|
||||
\ 'codeActions': [{
|
||||
\ '_ale_completion_item': 1,
|
||||
\ 'code_actions': [{
|
||||
\ 'description': 'Import default ''abcd'' from module "./foo"',
|
||||
\ 'changes': [],
|
||||
\ }],
|
||||
|
||||
@@ -196,6 +196,10 @@ After:
|
||||
" Clear the messages between tests.
|
||||
echomsg ''
|
||||
|
||||
if !exists('g:ale_command_wrapper')
|
||||
let g:ale_command_wrapper = ''
|
||||
endif
|
||||
|
||||
Given testft (A file with three lines):
|
||||
a
|
||||
b
|
||||
@@ -206,6 +210,13 @@ Execute(ALEFix should complain when there are no functions to call):
|
||||
call ale#test#FlushJobs()
|
||||
AssertEqual 'No fixers have been defined. Try :ALEFixSuggest', GetLastMessage()
|
||||
|
||||
Execute(ALEFix should not complain when the command is run with a bang):
|
||||
echom 'none'
|
||||
|
||||
ALEFix!
|
||||
call ale#test#FlushJobs()
|
||||
AssertEqual 'none', GetLastMessage()
|
||||
|
||||
Execute(ALEFix should apply simple functions):
|
||||
let g:ale_fixers.testft = ['AddCarets']
|
||||
ALEFix
|
||||
@@ -715,6 +726,19 @@ Execute(ale#fix#InitBufferData() should set up the correct data):
|
||||
\ 'done': 0,
|
||||
\ 'lines_before': ['a', 'b', 'c'],
|
||||
\ 'should_save': 1,
|
||||
\ 'ignore_file_changed_errors': 0,
|
||||
\ },
|
||||
\}, g:ale_fix_buffer_data
|
||||
|
||||
call ale#fix#InitBufferData(bufnr(''), '!')
|
||||
|
||||
AssertEqual {
|
||||
\ bufnr(''): {
|
||||
\ 'temporary_directory_list': [],
|
||||
\ 'done': 0,
|
||||
\ 'lines_before': ['a', 'b', 'c'],
|
||||
\ 'should_save': 0,
|
||||
\ 'ignore_file_changed_errors': 1,
|
||||
\ },
|
||||
\}, g:ale_fix_buffer_data
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
Execute(Checks for versions below the current version should succeed):
|
||||
AssertEqual 1, ale#Has('ale-3.0.0')
|
||||
AssertEqual 1, ale#Has('ale-2.7.0')
|
||||
AssertEqual 1, ale#Has('ale-2.6.0')
|
||||
AssertEqual 1, ale#Has('ale-2.5.0')
|
||||
|
||||
@@ -6,6 +6,7 @@ Before:
|
||||
Save g:ale_completion_delay
|
||||
Save g:ale_completion_enabled
|
||||
Save g:ale_completion_max_suggestions
|
||||
Save g:ale_disable_lsp
|
||||
Save g:ale_echo_cursor
|
||||
Save g:ale_echo_msg_error_str
|
||||
Save g:ale_echo_msg_format
|
||||
@@ -24,6 +25,7 @@ Before:
|
||||
Save g:ale_lint_on_text_changed
|
||||
Save g:ale_linters
|
||||
Save g:ale_linters_explicit
|
||||
Save g:ale_linters_ignore
|
||||
Save g:ale_list_vertical
|
||||
Save g:ale_list_window_size
|
||||
Save g:ale_loclist_msg_format
|
||||
@@ -64,6 +66,7 @@ Before:
|
||||
let g:ale_completion_delay = 100
|
||||
let g:ale_completion_enabled = 0
|
||||
let g:ale_completion_max_suggestions = 50
|
||||
let g:ale_disable_lsp = 0
|
||||
let g:ale_echo_cursor = 1
|
||||
let g:ale_echo_msg_error_str = 'Error'
|
||||
let g:ale_echo_msg_format = '%code: %%s'
|
||||
@@ -80,6 +83,7 @@ Before:
|
||||
let g:ale_lint_on_save = 1
|
||||
let g:ale_lint_on_text_changed = 'normal'
|
||||
let g:ale_linters_explicit = 0
|
||||
let g:ale_linters_ignore = {'python': ['pyright']}
|
||||
let g:ale_list_vertical = 0
|
||||
let g:ale_list_window_size = 10
|
||||
let g:ale_loclist_msg_format = '%code: %%s'
|
||||
@@ -138,6 +142,7 @@ Before:
|
||||
\ 'let g:ale_completion_delay = 100',
|
||||
\ 'let g:ale_completion_enabled = 0',
|
||||
\ 'let g:ale_completion_max_suggestions = 50',
|
||||
\ 'let g:ale_disable_lsp = 0',
|
||||
\ 'let g:ale_echo_cursor = 1',
|
||||
\ 'let g:ale_echo_msg_error_str = ''Error''',
|
||||
\ 'let g:ale_echo_msg_format = ''%code: %%s''',
|
||||
@@ -158,6 +163,7 @@ Before:
|
||||
\ 'let g:ale_linter_aliases = {}',
|
||||
\ 'let g:ale_linters = {}',
|
||||
\ 'let g:ale_linters_explicit = 0',
|
||||
\ 'let g:ale_linters_ignore = {''python'': [''pyright'']}',
|
||||
\ 'let g:ale_list_vertical = 0',
|
||||
\ 'let g:ale_list_window_size = 10',
|
||||
\ 'let g:ale_loclist_msg_format = ''%code: %%s''',
|
||||
@@ -243,6 +249,7 @@ Execute (ALEInfo with no linters should return the right output):
|
||||
\ ' Current Filetype: nolintersft',
|
||||
\ 'Available Linters: []',
|
||||
\ ' Enabled Linters: []',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -265,6 +272,7 @@ Execute (ALEInfo should return buffer-local global ALE settings):
|
||||
\ ' Current Filetype: ',
|
||||
\ 'Available Linters: []',
|
||||
\ ' Enabled Linters: []',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -279,6 +287,7 @@ Execute (ALEInfo with no filetype should return the right output):
|
||||
\ ' Current Filetype: ',
|
||||
\ 'Available Linters: []',
|
||||
\ ' Enabled Linters: []',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -295,6 +304,7 @@ Execute (ALEInfo with a single linter should return the right output):
|
||||
\ ' Current Filetype: testft',
|
||||
\ 'Available Linters: [''testlinter1'']',
|
||||
\ ' Enabled Linters: [''testlinter1'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -312,6 +322,7 @@ Execute (ALEInfo with two linters should return the right output):
|
||||
\ ' Current Filetype: testft',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -333,6 +344,7 @@ Execute (ALEInfo should calculate enabled linters correctly):
|
||||
\ ' Current Filetype: testft',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -350,6 +362,7 @@ Execute (ALEInfo should only return linters for current filetype):
|
||||
\ ' Current Filetype: testft',
|
||||
\ 'Available Linters: [''testlinter1'']',
|
||||
\ ' Enabled Linters: [''testlinter1'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -367,6 +380,7 @@ Execute (ALEInfo with compound filetypes should return linters for both of them)
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -389,6 +403,7 @@ Execute (ALEInfo should return appropriately named global variables):
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + [
|
||||
@@ -420,6 +435,7 @@ Execute (ALEInfoToFile should write to a file correctly):
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + [
|
||||
@@ -447,6 +463,7 @@ Execute (ALEInfo should buffer-local linter variables):
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + [
|
||||
@@ -478,6 +495,7 @@ Execute (ALEInfo should output linter aliases):
|
||||
\ '''testlinter1'' -> [''testftalias1'', ''testftalias2'']',
|
||||
\ '''testlinter2'' -> [''testftalias3'', ''testftalias4'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + [
|
||||
@@ -505,6 +523,7 @@ Execute (ALEInfo should return command history):
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -532,6 +551,7 @@ Execute (ALEInfo command history should print exit codes correctly):
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -580,6 +600,7 @@ Execute (ALEInfo command history should print command output if logging is on):
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -618,6 +639,7 @@ Execute (ALEInfo should include executable checks in the history):
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'']',
|
||||
\ ' Enabled Linters: [''testlinter1'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -647,6 +669,7 @@ Execute (The option for caching failing executable checks should work):
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'']',
|
||||
\ ' Enabled Linters: [''testlinter1'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -669,6 +692,7 @@ Execute (LSP errors for a linter should be outputted):
|
||||
\ ' Current Filetype: testft',
|
||||
\ 'Available Linters: [''testlinter1'']',
|
||||
\ ' Enabled Linters: [''testlinter1'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -693,6 +717,7 @@ Execute (LSP errors for other linters shouldn't appear):
|
||||
\ ' Current Filetype: testft',
|
||||
\ 'Available Linters: [''testlinter1'']',
|
||||
\ ' Enabled Linters: [''testlinter1'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -715,6 +740,7 @@ Execute (ALEInfo should include linter global options):
|
||||
\ ' Current Filetype: testft.testft2',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
@@ -740,6 +766,7 @@ Execute (ALEInfo should include linter global options for enabled linters):
|
||||
\ ' Current Filetype: testft',
|
||||
\ 'Available Linters: [''testlinter1'', ''testlinter2'']',
|
||||
\ ' Enabled Linters: [''testlinter1'']',
|
||||
\ ' Ignored Linters: []',
|
||||
\ ]
|
||||
\ + g:fixer_lines
|
||||
\ + g:variables_lines
|
||||
|
||||
27
test/test_ale_lint_stop_command.vader
Normal file
27
test/test_ale_lint_stop_command.vader
Normal file
@@ -0,0 +1,27 @@
|
||||
Before:
|
||||
Save g:ale_buffer_info
|
||||
|
||||
let g:ale_buffer_info = {}
|
||||
|
||||
call ale#linter#PreventLoading('testft')
|
||||
call ale#linter#Define('testft', {
|
||||
\ 'name': 'testlinter',
|
||||
\ 'callback': {-> []},
|
||||
\ 'executable': has('win32') ? 'cmd' : 'true',
|
||||
\ 'command': 'sleep 9001',
|
||||
\})
|
||||
|
||||
After:
|
||||
Restore
|
||||
|
||||
call ale#linter#Reset()
|
||||
|
||||
Given testft (An empty file):
|
||||
Execute(ALELintStop should stop ALE from linting):
|
||||
ALELint
|
||||
|
||||
Assert ale#engine#IsCheckingBuffer(bufnr('')), 'ALE did not start checking the buffer'
|
||||
|
||||
ALELintStop
|
||||
|
||||
Assert !ale#engine#IsCheckingBuffer(bufnr('')), 'ALELintStop didn''t work'
|
||||
@@ -132,3 +132,19 @@ Execute(Linters where lint_file eventually evaluates to 1 shouldn't be run if we
|
||||
call ale#test#FlushJobs()
|
||||
|
||||
AssertEqual [], ale#test#GetLoclistWithoutModule()
|
||||
|
||||
Execute(Keeping computed lint_file jobs running should work):
|
||||
AssertEqual 'testlinter2', ale#linter#Get('foobar')[1].name
|
||||
|
||||
call ale#engine#InitBufferInfo(bufnr(''))
|
||||
|
||||
call ale#engine#MarkLinterActive(
|
||||
\ g:ale_buffer_info[bufnr('')],
|
||||
\ ale#linter#Get('foobar')[1]
|
||||
\)
|
||||
call ale#engine#RunLinters(bufnr(''), ale#linter#Get('foobar'), 0)
|
||||
|
||||
Assert !empty(g:ale_buffer_info[bufnr('')].active_linter_list),
|
||||
\ 'The active linter list was empty'
|
||||
Assert ale#engine#IsCheckingBuffer(bufnr('')),
|
||||
\ 'The IsCheckingBuffer function returned 0'
|
||||
|
||||
Reference in New Issue
Block a user