mirror of
https://github.com/dense-analysis/ale.git
synced 2026-01-03 01:53:30 +08:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -4,31 +4,52 @@ Before:
|
||||
Save &filetype
|
||||
let &filetype = 'c'
|
||||
|
||||
Save b:ale_c_clangd_options
|
||||
Save b:ale_c_build_dir
|
||||
Save b:ale_c_build_dir_names
|
||||
Save b:ale_c_parse_compile_commands
|
||||
|
||||
let b:command_tail = ' -x c'
|
||||
|
||||
After:
|
||||
unlet! b:command_tail
|
||||
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(The language string should be correct):
|
||||
AssertLSPLanguage 'c'
|
||||
|
||||
Execute(The default executable should be correct):
|
||||
AssertLinter 'clangd', ale#Escape('clangd')
|
||||
AssertLinter 'clangd', ale#Escape('clangd') . b:command_tail
|
||||
|
||||
Execute(The project root should be detected correctly):
|
||||
call ale#test#SetFilename(tempname() . '/dummy.c')
|
||||
|
||||
AssertLSPProject ''
|
||||
|
||||
call ale#test#SetFilename('clangd_paths/dummy.c')
|
||||
call ale#test#SetFilename('clangd_paths/with_compile_commands/dummy.c')
|
||||
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/clangd_paths')
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/clangd_paths/with_compile_commands')
|
||||
|
||||
Execute(The executable should be configurable):
|
||||
let g:ale_c_clangd_executable = 'foobar'
|
||||
|
||||
AssertLinter 'foobar', ale#Escape('foobar')
|
||||
AssertLinter 'foobar', ale#Escape('foobar') . b:command_tail
|
||||
|
||||
Execute(The options should be configurable):
|
||||
let b:ale_c_clangd_options = '-compile-commands-dir=foo'
|
||||
|
||||
AssertLinter 'clangd', ale#Escape('clangd') . ' ' . b:ale_c_clangd_options
|
||||
AssertLinter 'clangd', ale#Escape('clangd') . b:command_tail . ' ' . b:ale_c_clangd_options
|
||||
|
||||
Execute(The compile command database should be detected correctly):
|
||||
call ale#test#SetFilename('clangd_paths/with_build_dir/dummy_src/dummy.c')
|
||||
|
||||
let b:ale_c_clangd_options = ''
|
||||
let b:ale_c_build_dir = ''
|
||||
let b:ale_c_build_dir_names = ['unusual_build_dir_name']
|
||||
let b:ale_c_parse_compile_commands = 1
|
||||
|
||||
AssertLinter 'clangd', ale#Escape('clangd') . b:command_tail
|
||||
\ . ' -compile-commands-dir='
|
||||
\ . ale#Escape(ale#path#Simplify(g:dir . '/clangd_paths/with_build_dir/unusual_build_dir_name'))
|
||||
|
||||
|
||||
12
test/command_callback/test_nimlsp_command_callback.vader
Normal file
12
test/command_callback/test_nimlsp_command_callback.vader
Normal file
@@ -0,0 +1,12 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('nim', 'nimlsp')
|
||||
|
||||
After:
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(It does not set nim sources by default):
|
||||
AssertLinter 'nimlsp', ale#Escape('nimlsp')
|
||||
|
||||
Execute(Sets nimlsp and escapes sources from g:ale_nim_nimlsp_nim_sources):
|
||||
let g:ale_nim_nimlsp_nim_sources = '/path/to /Nim'
|
||||
AssertLinter 'nimlsp', ale#Escape('nimlsp') . ' ' . ale#Escape('/path/to /Nim')
|
||||
@@ -431,6 +431,12 @@ Execute(HandleUserData should call ale#code_action#HandleCodeAction):
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 2
|
||||
|
||||
let b:ale_completion_info = {'source': 'ale-callback'}
|
||||
call ale#completion#HandleUserData({
|
||||
\ 'user_data': '{"codeActions": [{"description":"", "changes": []}]}'
|
||||
\})
|
||||
AssertEqual g:handle_code_action_called, 3
|
||||
|
||||
Execute(ale#code_action#HandleCodeAction should not be called when when source is not ALE):
|
||||
call MockHandleCodeAction()
|
||||
let b:ale_completion_info = {'source': 'syntastic'}
|
||||
|
||||
@@ -190,10 +190,8 @@ Execute(The right message sent to the tsserver LSP when the first completion mes
|
||||
\ 'source': '/path/to/foo.ts',
|
||||
\ }, {
|
||||
\ 'name': 'FooBar',
|
||||
\ 'source': '',
|
||||
\ }, {
|
||||
\ 'name': 'frazzle',
|
||||
\ 'source': '',
|
||||
\ }],
|
||||
\ 'offset': 1,
|
||||
\ 'line': 1,
|
||||
|
||||
94
test/lsp/test_handling_window_requests.vader
Normal file
94
test/lsp/test_handling_window_requests.vader
Normal file
@@ -0,0 +1,94 @@
|
||||
Before:
|
||||
let g:expr_list = []
|
||||
let g:linter_name = 'some_linter'
|
||||
let g:format = '%severity%:%linter%: %s'
|
||||
" Get the default value to restore it
|
||||
let g:default_severity = g:ale_lsp_show_message_severity
|
||||
let g:ale_lsp_show_message_severity = 'information'
|
||||
|
||||
function! ale#util#ShowMessage(expr) abort
|
||||
call add(g:expr_list, a:expr)
|
||||
endfunction
|
||||
|
||||
After:
|
||||
unlet! g:expr_list
|
||||
unlet! g:linter_name
|
||||
unlet! g:format
|
||||
let g:ale_lsp_show_message_severity = g:default_severity
|
||||
unlet! g:default_severity
|
||||
|
||||
Execute(ale#lsp_window#HandleShowMessage() should only show errors when severity is set to "error"):
|
||||
let g:ale_lsp_show_message_severity = 'error'
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':1,'message':'an error'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':2,'message':'a warning'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':3,'message':'an info'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':4,'message':'a log'})
|
||||
AssertEqual ['Error:some_linter: an error'], g:expr_list
|
||||
|
||||
Execute(ale#lsp_window#HandleShowMessage() should only show errors and warnings when severity is set to "warning"):
|
||||
let g:ale_lsp_show_message_severity = 'warning'
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':1,'message':'an error'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':2,'message':'a warning'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':3,'message':'an info'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':4,'message':'a log'})
|
||||
AssertEqual ['Error:some_linter: an error', 'Warning:some_linter: a warning'], g:expr_list
|
||||
|
||||
Execute(ale#lsp_window#HandleShowMessage() should only show errors, warnings and infos when severity is set to "information"):
|
||||
let g:ale_lsp_show_message_severity = 'information'
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':1,'message':'an error'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':2,'message':'a warning'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':3,'message':'an info'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':4,'message':'a log'})
|
||||
AssertEqual [
|
||||
\ 'Error:some_linter: an error',
|
||||
\ 'Warning:some_linter: a warning',
|
||||
\ 'Info:some_linter: an info'],
|
||||
\ g:expr_list
|
||||
|
||||
Execute(ale#lsp_window#HandleShowMessage() should only show errors, warnings and infos when severity is set to "info"):
|
||||
let g:ale_lsp_show_message_severity = 'info'
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':1,'message':'an error'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':2,'message':'a warning'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':3,'message':'an info'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':4,'message':'a log'})
|
||||
AssertEqual [
|
||||
\ 'Error:some_linter: an error',
|
||||
\ 'Warning:some_linter: a warning',
|
||||
\ 'Info:some_linter: an info'],
|
||||
\ g:expr_list
|
||||
|
||||
Execute(ale#lsp_window#HandleShowMessage() should show all messages is severity is set to "log"):
|
||||
let g:ale_lsp_show_message_severity = 'log'
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':1,'message':'an error'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':2,'message':'a warning'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':3,'message':'an info'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':4,'message':'a log'})
|
||||
AssertEqual [
|
||||
\ 'Error:some_linter: an error',
|
||||
\ 'Warning:some_linter: a warning',
|
||||
\ 'Info:some_linter: an info',
|
||||
\ 'Log:some_linter: a log'],
|
||||
\ g:expr_list
|
||||
|
||||
Execute(ale#lsp_window#HandleShowMessage() should not show anything if severity is configured as disabled):
|
||||
let g:ale_lsp_show_message_severity = 'disabled'
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':1,'message':'an error'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':2,'message':'a warning'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':3,'message':'an info'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':4,'message':'a log'})
|
||||
AssertEqual [], g:expr_list
|
||||
|
||||
Execute(ale#lsp_window#HandleShowMessage() should use "warning" when severity is set to an invalid value):
|
||||
let g:ale_lsp_show_message_severity = 'foo'
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':1,'message':'an error'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':2,'message':'a warning'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':3,'message':'an info'})
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':4,'message':'a log'})
|
||||
AssertEqual [
|
||||
\ 'Error:some_linter: an error',
|
||||
\ 'Warning:some_linter: a warning'],
|
||||
\ g:expr_list
|
||||
|
||||
Execute(ale#lsp_window#HandleShowMessage() should escape quotes on messages):
|
||||
call ale#lsp_window#HandleShowMessage(g:linter_name, g:format, {'type':3,'message':"this is an 'info'"})
|
||||
AssertEqual ['Info:some_linter: this is an ''info'''], g:expr_list
|
||||
0
test/nim-test-files/with-git/src/source.nim
Normal file
0
test/nim-test-files/with-git/src/source.nim
Normal file
@@ -1,4 +1,5 @@
|
||||
Execute(Checks for versions below the current version should succeed):
|
||||
AssertEqual 1, ale#Has('ale-2.6.0')
|
||||
AssertEqual 1, ale#Has('ale-2.5.0')
|
||||
AssertEqual 1, ale#Has('ale-2.4.0')
|
||||
AssertEqual 1, ale#Has('ALE-2.2.1')
|
||||
|
||||
19
test/test_nimlsp_project_root.vader
Normal file
19
test/test_nimlsp_project_root.vader
Normal file
@@ -0,0 +1,19 @@
|
||||
Before:
|
||||
runtime ale_linters/nim/nimlsp.vim
|
||||
call ale#test#SetDirectory('/testplugin/test')
|
||||
|
||||
After:
|
||||
if isdirectory(g:dir . '/.git')
|
||||
call delete(g:dir . '/.git', 'd')
|
||||
endif
|
||||
|
||||
call ale#test#RestoreDirectory()
|
||||
call ale#linter#Reset()
|
||||
|
||||
|
||||
Execute(Detect root of nim project with .git/ correctly):
|
||||
call ale#test#SetFilename('nim-test-files/with-git/src/source.nim')
|
||||
call mkdir(g:dir . '/.git')
|
||||
AssertEqual
|
||||
\ ale#path#Simplify(g:dir),
|
||||
\ ale_linters#nim#nimlsp#GetProjectRoot(bufnr(''))
|
||||
Reference in New Issue
Block a user