mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-21 11:41:15 +08:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
0
test/command_callback/python_paths/with_virtualenv/env/Scripts/autoimport.exe
vendored
Executable file
0
test/command_callback/python_paths/with_virtualenv/env/Scripts/autoimport.exe
vendored
Executable file
0
test/command_callback/python_paths/with_virtualenv/env/Scripts/yamlfix.exe
vendored
Normal file
0
test/command_callback/python_paths/with_virtualenv/env/Scripts/yamlfix.exe
vendored
Normal file
0
test/command_callback/python_paths/with_virtualenv/env/bin/autoimport
vendored
Executable file
0
test/command_callback/python_paths/with_virtualenv/env/bin/autoimport
vendored
Executable file
0
test/command_callback/python_paths/with_virtualenv/env/bin/yamlfix
vendored
Executable file
0
test/command_callback/python_paths/with_virtualenv/env/bin/yamlfix
vendored
Executable file
0
test/command_callback/r_paths/.Rprofile
Normal file
0
test/command_callback/r_paths/.Rprofile
Normal file
@@ -0,0 +1,16 @@
|
||||
Before:
|
||||
let b:file = fnamemodify(bufname(''), ':.')
|
||||
call ale#assert#SetUpLinterTest('erlang', 'elvis')
|
||||
|
||||
After:
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(Default command should be correct):
|
||||
AssertLinter 'elvis',
|
||||
\ ale#Escape('elvis') . ' rock --output-format=parsable ' . ale#Escape(b:file)
|
||||
|
||||
Execute(Executable should be configurable):
|
||||
let b:ale_erlang_elvis_executable = '/path/to/elvis'
|
||||
|
||||
AssertLinter '/path/to/elvis',
|
||||
\ ale#Escape('/path/to/elvis') . ' rock --output-format=parsable ' . ale#Escape(b:file)
|
||||
@@ -0,0 +1,26 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('php', 'intelephense')
|
||||
|
||||
After:
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(The default executable path should be correct):
|
||||
AssertLinter 'intelephense',
|
||||
\ ale#Escape('intelephense') . ' --stdio'
|
||||
|
||||
Execute(The project path should be correct for .git directories):
|
||||
call ale#test#SetFilename('php-intelephense-project/with-git/test.php')
|
||||
silent! call mkdir('php-intelephense-project/with-git/.git', 'p')
|
||||
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/php-intelephense-project/with-git')
|
||||
|
||||
Execute(The project path should be correct for composer.json file):
|
||||
call ale#test#SetFilename('php-intelephense-project/with-composer/test.php')
|
||||
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/php-intelephense-project/with-composer')
|
||||
|
||||
Execute(The project cache should be saved in a temp dir):
|
||||
call ale#test#SetFilename('php-intelephense-project/with-composer/test.php')
|
||||
let g:ale_php_intelephense_config = { 'storagePath': '/tmp/intelephense' }
|
||||
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/php-intelephense-project/with-composer')
|
||||
22
test/command_callback/test_r_languageserver_callbacks.vader
Normal file
22
test/command_callback/test_r_languageserver_callbacks.vader
Normal file
@@ -0,0 +1,22 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('r', 'languageserver')
|
||||
|
||||
After:
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(The default executable path should be correct):
|
||||
AssertLinter 'Rscript', 'Rscript --vanilla -e ' . ale#Escape('languageserver::run()')
|
||||
|
||||
Execute(The project root should be detected correctly):
|
||||
AssertLSPProject '.'
|
||||
|
||||
call ale#test#SetFilename('r_paths/dummy/test.R')
|
||||
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/r_paths')
|
||||
|
||||
Execute(Should accept configuration settings):
|
||||
AssertLSPConfig {}
|
||||
|
||||
let b:ale_r_languageserver_config = {'r': {'lsp': {'debug': 'true', 'diagnostics': 'true'}}}
|
||||
|
||||
AssertLSPConfig {'r': {'lsp': {'debug': 'true', 'diagnostics': 'true'}}}
|
||||
@@ -40,6 +40,7 @@ Execute(Should handle Rust completion results correctly):
|
||||
\ {'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})},
|
||||
\ {'word': 'to_vec', 'menu': 'pub fn to_vec(&self) -> Vec<T> where T: Clone,', 'info': '', 'kind': 'f', 'icase': 1, 'user_data': json_encode({'_ale_completion_item': 1})},
|
||||
\],
|
||||
\ ale#completion#ParseLSPCompletions({
|
||||
\ "jsonrpc":"2.0",
|
||||
@@ -184,6 +185,11 @@ Execute(Should handle Rust completion results correctly):
|
||||
\ "label":"from",
|
||||
\ "kind":3,
|
||||
\ "detail":"fn from(s: Cow<'a, str>) -> String"
|
||||
\ },
|
||||
\ {
|
||||
\ "label":"to_vec",
|
||||
\ "kind":3,
|
||||
\ "detail":"pub fn to_vec(&self) -> Vec<T>\nwhere\n T: Clone,"
|
||||
\ }
|
||||
\ ]
|
||||
\ })
|
||||
|
||||
50
test/fixers/test_autoimport_fixer_callback.vader
Normal file
50
test/fixers/test_autoimport_fixer_callback.vader
Normal file
@@ -0,0 +1,50 @@
|
||||
Before:
|
||||
Save g:ale_python_autoimport_executable
|
||||
Save g:ale_python_autoimport_options
|
||||
|
||||
" Use an invalid global executable, so we don't match it.
|
||||
let g:ale_python_autoimport_executable = 'xxxinvalid'
|
||||
let g:ale_python_autoimport_options = ''
|
||||
|
||||
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||
silent cd ..
|
||||
silent cd command_callback
|
||||
let g:dir = getcwd()
|
||||
|
||||
let b:bin_dir = has('win32') ? 'Scripts' : 'bin'
|
||||
|
||||
After:
|
||||
Restore
|
||||
|
||||
unlet! b:bin_dir
|
||||
|
||||
call ale#test#RestoreDirectory()
|
||||
|
||||
Execute(The autoimport callback should return the correct default values):
|
||||
AssertEqual
|
||||
\ 0,
|
||||
\ ale#fixers#autoimport#Fix(bufnr(''))
|
||||
|
||||
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'command': ale#path#BufferCdString(bufnr(''))
|
||||
\ . ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/autoimport')) . ' -',
|
||||
\ },
|
||||
\ ale#fixers#autoimport#Fix(bufnr(''))
|
||||
|
||||
Execute(The autoimport callback should respect custom options):
|
||||
let g:ale_python_autoimport_options = '--multi-line=3 --trailing-comma'
|
||||
|
||||
AssertEqual
|
||||
\ 0,
|
||||
\ ale#fixers#autoimport#Fix(bufnr(''))
|
||||
|
||||
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'command': ale#path#BufferCdString(bufnr(''))
|
||||
\ . ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/autoimport'))
|
||||
\ . ' --multi-line=3 --trailing-comma -',
|
||||
\ },
|
||||
\ ale#fixers#autoimport#Fix(bufnr(''))
|
||||
35
test/fixers/test_luafmt_fixer_callback.vader
Normal file
35
test/fixers/test_luafmt_fixer_callback.vader
Normal file
@@ -0,0 +1,35 @@
|
||||
Before:
|
||||
Save g:ale_lua_luafmt_executable
|
||||
Save g:ale_lua_luafmt_options
|
||||
|
||||
" Use an invalid global executable, so we don't match it.
|
||||
let g:ale_lua_luafmt_executable = 'xxxinvalid'
|
||||
let g:ale_lua_luafmt_options = ''
|
||||
|
||||
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||
|
||||
After:
|
||||
Restore
|
||||
|
||||
call ale#test#RestoreDirectory()
|
||||
|
||||
Execute(The luafmt callback should return the correct default values):
|
||||
call ale#test#SetFilename('../lua_files/testfile.lua')
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'command': ale#Escape('xxxinvalid') . ' --stdin',
|
||||
\ },
|
||||
\ ale#fixers#luafmt#Fix(bufnr(''))
|
||||
|
||||
Execute(The luafmt callback should include custom luafmt options):
|
||||
let g:ale_lua_luafmt_options = "--skip-children"
|
||||
call ale#test#SetFilename('../lua_files/testfile.lua')
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'command': ale#Escape('xxxinvalid')
|
||||
\ . ' ' . g:ale_lua_luafmt_options
|
||||
\ . ' --stdin',
|
||||
\ },
|
||||
\ ale#fixers#luafmt#Fix(bufnr(''))
|
||||
24
test/fixers/test_ormolu_fixer_callback.vader
Normal file
24
test/fixers/test_ormolu_fixer_callback.vader
Normal file
@@ -0,0 +1,24 @@
|
||||
Before:
|
||||
Save g:ale_haskell_ormolu_executable
|
||||
Save g:ale_haskell_ormolu_options
|
||||
|
||||
After:
|
||||
Restore
|
||||
|
||||
Execute(The ormolu callback should return the correct default values):
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'command': ale#Escape('ormolu')
|
||||
\ },
|
||||
\ ale#fixers#ormolu#Fix(bufnr(''))
|
||||
|
||||
Execute(The ormolu executable and options should be configurable):
|
||||
let g:ale_nix_nixpkgsfmt_executable = '/path/to/ormolu'
|
||||
let g:ale_nix_nixpkgsfmt_options = '-h'
|
||||
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'command': ale#Escape('/path/to/ormolu')
|
||||
\ . ' -h',
|
||||
\ },
|
||||
\ ale#fixers#nixpkgsfmt#Fix(bufnr(''))
|
||||
@@ -5,6 +5,7 @@ Before:
|
||||
|
||||
let g:ale_php_phpcbf_executable = 'phpcbf_test'
|
||||
let g:ale_php_phpcbf_standard = ''
|
||||
let g:ale_php_phpcbf_options = ''
|
||||
let g:ale_php_phpcbf_use_global = 0
|
||||
|
||||
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||
@@ -54,6 +55,15 @@ Execute(The phpcbf callback should include the phpcbf_standard option):
|
||||
\ {'command': ale#Escape(ale#path#Simplify(g:dir . '/php_paths/project-with-phpcbf/vendor/bin/phpcbf')) . ' --stdin-path=%s ' . '--standard=phpcbf_ruleset.xml' . ' -'},
|
||||
\ ale#fixers#phpcbf#Fix(bufnr(''))
|
||||
|
||||
Execute(User provided options should be used):
|
||||
let g:ale_php_phpcbf_options = '--my-user-provided-option my-value'
|
||||
call ale#test#SetFilename('php_paths/project-with-phpcbf/foo/test.php')
|
||||
|
||||
AssertEqual
|
||||
\ {'command': ale#Escape(ale#path#Simplify(g:dir . '/php_paths/project-with-phpcbf/vendor/bin/phpcbf')) . ' --stdin-path=%s ' . ale#Pad('--my-user-provided-option my-value') . ' -'},
|
||||
\ ale#fixers#phpcbf#Fix(bufnr(''))
|
||||
|
||||
|
||||
Before:
|
||||
Save g:ale_php_phpcbf_executable
|
||||
Save g:ale_php_phpcbf_standard
|
||||
@@ -61,6 +71,7 @@ Before:
|
||||
|
||||
let g:ale_php_phpcbf_executable = 'phpcbf_test'
|
||||
let g:ale_php_phpcbf_standard = ''
|
||||
let g:ale_php_phpcbf_options = ''
|
||||
let g:ale_php_phpcbf_use_global = 0
|
||||
|
||||
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||
|
||||
50
test/fixers/test_yamlfix_fixer_callback.vader
Normal file
50
test/fixers/test_yamlfix_fixer_callback.vader
Normal file
@@ -0,0 +1,50 @@
|
||||
Before:
|
||||
Save g:ale_python_yamlfix_executable
|
||||
Save g:ale_python_yamlfix_options
|
||||
|
||||
" Use an invalid global executable, so we don't match it.
|
||||
let g:ale_python_yamlfix_executable = 'xxxinvalid'
|
||||
let g:ale_python_yamlfix_options = ''
|
||||
|
||||
call ale#test#SetDirectory('/testplugin/test/fixers')
|
||||
silent cd ..
|
||||
silent cd command_callback
|
||||
let g:dir = getcwd()
|
||||
|
||||
let b:bin_dir = has('win32') ? 'Scripts' : 'bin'
|
||||
|
||||
After:
|
||||
Restore
|
||||
|
||||
unlet! b:bin_dir
|
||||
|
||||
call ale#test#RestoreDirectory()
|
||||
|
||||
Execute(The yamlfix callback should return the correct default values):
|
||||
AssertEqual
|
||||
\ 0,
|
||||
\ ale#fixers#yamlfix#Fix(bufnr(''))
|
||||
|
||||
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.yaml')
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'command': ale#path#BufferCdString(bufnr(''))
|
||||
\ . ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/yamlfix')) . ' -',
|
||||
\ },
|
||||
\ ale#fixers#yamlfix#Fix(bufnr(''))
|
||||
|
||||
Execute(The yamlfix callback should respect custom options):
|
||||
let g:ale_yaml_yamlfix_options = '--multi-line=3 --trailing-comma'
|
||||
|
||||
AssertEqual
|
||||
\ 0,
|
||||
\ ale#fixers#yamlfix#Fix(bufnr(''))
|
||||
|
||||
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.yaml')
|
||||
AssertEqual
|
||||
\ {
|
||||
\ 'command': ale#path#BufferCdString(bufnr(''))
|
||||
\ . ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/yamlfix'))
|
||||
\ . ' --multi-line=3 --trailing-comma -',
|
||||
\ },
|
||||
\ ale#fixers#yamlfix#Fix(bufnr(''))
|
||||
37
test/handler/test_erlang_elvis_handler.vader
Normal file
37
test/handler/test_erlang_elvis_handler.vader
Normal file
@@ -0,0 +1,37 @@
|
||||
Before:
|
||||
runtime ale_linters/erlang/elvis.vim
|
||||
|
||||
After:
|
||||
call ale#linter#Reset()
|
||||
|
||||
Execute(Warning messages should be handled):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {
|
||||
\ 'lnum': 11,
|
||||
\ 'text': "Replace the 'if' expression on line 11 with a 'case' expression or function clauses.",
|
||||
\ 'type': 'W',
|
||||
\ },
|
||||
\ {
|
||||
\ 'lnum': 20,
|
||||
\ 'text': 'Remove the debug call to io:format/1 on line 20.',
|
||||
\ 'type': 'W',
|
||||
\ },
|
||||
\ ],
|
||||
\ ale_linters#erlang#elvis#Handle(bufnr(''), [
|
||||
\ "src/foo.erl:11:no_if_expression:Replace the 'if' expression on line 11 with a 'case' expression or function clauses.",
|
||||
\ 'src/foo.erl:20:no_debug_call:Remove the debug call to io:format/1 on line 20.',
|
||||
\ ])
|
||||
|
||||
Execute(Line length message shouldn't contain the line itself):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {
|
||||
\ 'lnum': 24,
|
||||
\ 'text': 'Line 24 is too long.',
|
||||
\ 'type': 'W',
|
||||
\ },
|
||||
\ ],
|
||||
\ ale_linters#erlang#elvis#Handle(bufnr(''), [
|
||||
\ 'src/foo.erl:24:line_length:Line 24 is too long: io:format("Look ma, too long!"),.',
|
||||
\ ])
|
||||
@@ -13,7 +13,16 @@ Execute(phpcs errors should be handled):
|
||||
\ 'type': 'E',
|
||||
\ 'sub_type': 'style',
|
||||
\ 'text': 'Line indented incorrectly; expected 4 spaces, found 2 (Generic.WhiteSpace.ScopeIndent.IncorrectExact)',
|
||||
\ }],
|
||||
\ },
|
||||
\ {
|
||||
\ 'lnum': 22,
|
||||
\ 'col': 3,
|
||||
\ 'type': 'E',
|
||||
\ 'sub_type': 'style',
|
||||
\ 'text': 'All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks)',
|
||||
\ },
|
||||
\ ],
|
||||
\ ale_linters#php#phpcs#Handle(bufnr(''), [
|
||||
\ '/path/to/some-filename.php:18:3: error - Line indented incorrectly; expected 4 spaces, found 2 (Generic.WhiteSpace.ScopeIndent.IncorrectExact)',
|
||||
\ "/path/to/some-filename.php:22:3: error - All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '\"\n'.",
|
||||
\ ])
|
||||
|
||||
34
test/handler/test_tlint_handler.vader
Normal file
34
test/handler/test_tlint_handler.vader
Normal file
@@ -0,0 +1,34 @@
|
||||
Before:
|
||||
runtime ale_linters/php/tlint.vim
|
||||
|
||||
After:
|
||||
call ale#linter#Reset()
|
||||
|
||||
Execute(The tlint handler should calculate line numbers):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {
|
||||
\ 'lnum': '5',
|
||||
\ 'col': 0,
|
||||
\ 'sub_type':
|
||||
\ 'style',
|
||||
\ 'type': 'W',
|
||||
\ 'text': ['! There should be no unused imports.', 'There should be no unused imports.', '', '', '', '', '', '', '', '']
|
||||
\ },
|
||||
\ {
|
||||
\ 'lnum': '15',
|
||||
\ 'col': 0,
|
||||
\ 'sub_type':
|
||||
\ 'style',
|
||||
\ 'type': 'W',
|
||||
\ 'text': ['! There should be no method visibility in test methods.', 'There should be no method visibility in test methods.', '', '', '', '', '', '', '', '']
|
||||
\ },
|
||||
\ ],
|
||||
\ ale_linters#php#tlint#Handle(347, [
|
||||
\ "Lints for /Users/jose/Code/Tighten/tester/tests/Unit/ExampleTest.php",
|
||||
\ "============",
|
||||
\ "! There should be no unused imports.",
|
||||
\ "5 : `use Illuminate\Foundation\Testing\RefreshDatabase;`",
|
||||
\ "! There should be no method visibility in test methods.",
|
||||
\ "15 : ` public function testBasicTest()`",
|
||||
\ ])
|
||||
0
test/lua_files/testfile.lua
Normal file
0
test/lua_files/testfile.lua
Normal file
@@ -105,11 +105,9 @@ Execute(Failed codefix responses should be handled correctly):
|
||||
\)
|
||||
AssertEqual g:handle_code_action_called, 0
|
||||
|
||||
|
||||
|
||||
Given typescript(Some typescript file):
|
||||
foo
|
||||
somelongerline
|
||||
somelongerline ()
|
||||
bazxyzxyzxyz
|
||||
|
||||
Execute(getCodeFixes from tsserver should be handled):
|
||||
@@ -283,7 +281,7 @@ Execute(tsserver codefix requests should be sent):
|
||||
|
||||
runtime ale_linters/typescript/tsserver.vim
|
||||
let g:ale_buffer_info = {bufnr(''): {'loclist': [{'lnum': 2, 'col': 5, 'code': 2304}]}}
|
||||
call setpos('.', [bufnr(''), 2, 5, 0])
|
||||
call setpos('.', [bufnr(''), 2, 16, 0])
|
||||
|
||||
" ALECodeAction
|
||||
call ale#codefix#Execute(0)
|
||||
@@ -303,9 +301,9 @@ Execute(tsserver codefix requests should be sent):
|
||||
\ ale#lsp#tsserver_message#Change(bufnr('')),
|
||||
\ [0, 'ts@getCodeFixes', {
|
||||
\ 'startLine': 2,
|
||||
\ 'startOffset': 5,
|
||||
\ 'startOffset': 16,
|
||||
\ 'endLine': 2,
|
||||
\ 'endOffset': 6,
|
||||
\ 'endOffset': 17,
|
||||
\ 'file': expand('%:p'),
|
||||
\ 'errorCodes': [2304],
|
||||
\ }]
|
||||
@@ -316,8 +314,8 @@ Execute(tsserver codefix requests should be sent only for error with code):
|
||||
call ale#linter#Reset()
|
||||
|
||||
runtime ale_linters/typescript/tsserver.vim
|
||||
let g:ale_buffer_info = {bufnr(''): {'loclist': [{'lnum': 2, 'col': 5}, {'lnum': 2, 'col': 5, 'code': 2304}]}}
|
||||
call setpos('.', [bufnr(''), 2, 5, 0])
|
||||
let g:ale_buffer_info = {bufnr(''): {'loclist': [{'lnum': 2, 'col': 16}, {'lnum': 2, 'col': 16, 'code': 2304}]}}
|
||||
call setpos('.', [bufnr(''), 2, 16, 0])
|
||||
|
||||
" ALECodeAction
|
||||
call ale#codefix#Execute(0)
|
||||
@@ -337,9 +335,9 @@ Execute(tsserver codefix requests should be sent only for error with code):
|
||||
\ ale#lsp#tsserver_message#Change(bufnr('')),
|
||||
\ [0, 'ts@getCodeFixes', {
|
||||
\ 'startLine': 2,
|
||||
\ 'startOffset': 5,
|
||||
\ 'startOffset': 16,
|
||||
\ 'endLine': 2,
|
||||
\ 'endOffset': 6,
|
||||
\ 'endOffset': 17,
|
||||
\ 'file': expand('%:p'),
|
||||
\ 'errorCodes': [2304],
|
||||
\ }]
|
||||
@@ -424,43 +422,6 @@ Execute(getEditsForRefactor should print error on failure):
|
||||
|
||||
AssertEqual ['echom ''Error while getting edits for refactor. Reason: oops'''], g:expr_list
|
||||
|
||||
" TODO: I can't figure out how to run ALECodeAction on range
|
||||
" in test function. Therefore I can't write properly working
|
||||
" test. If somebody knows how to do that help is appreciated.
|
||||
"
|
||||
" Execute(tsserver getApplicableRefactors requests should be sent):
|
||||
" call ale#linter#Reset()
|
||||
"
|
||||
" runtime ale_linters/typescript/tsserver.vim
|
||||
" let g:ale_buffer_info = {bufnr(''): {'loclist': []}}
|
||||
" call setpos('.', [bufnr(''), 2, 5, 0])
|
||||
" normal "v$"
|
||||
"
|
||||
" execute "ALECodeAction"
|
||||
"
|
||||
" " We shouldn't register the callback yet.
|
||||
" AssertEqual '''''', string(g:Callback)
|
||||
"
|
||||
" AssertEqual type(function('type')), type(g:InitCallback)
|
||||
" call g:InitCallback()
|
||||
"
|
||||
" AssertEqual 'code_actions', g:capability_checked
|
||||
" AssertEqual
|
||||
" \ 'function(''ale#codefix#HandleTSServerResponse'')',
|
||||
" \ string(g:Callback)
|
||||
" AssertEqual
|
||||
" \ [
|
||||
" \ ale#lsp#tsserver_message#Change(bufnr('')),
|
||||
" \ [0, 'ts@getApplicableRefactors', {
|
||||
" \ 'startLine': 2,
|
||||
" \ 'startOffset': 5,
|
||||
" \ 'endLine': 2,
|
||||
" \ 'endOffset': 15,
|
||||
" \ 'file': expand('%:p'),
|
||||
" \ }]
|
||||
" \ ],
|
||||
" \ g:message_list
|
||||
|
||||
Execute(Failed LSP responses should be handled correctly):
|
||||
call ale#codefix#HandleLSPResponse(
|
||||
\ 1,
|
||||
@@ -545,23 +506,15 @@ Execute(LSP code action requests should be sent):
|
||||
\ string(g:Callback)
|
||||
AssertEqual
|
||||
\ [
|
||||
\ [1, 'workspace/didChangeConfiguration', {'settings': {'python': {}}}],
|
||||
\ [1, 'textDocument/didChange', {
|
||||
\ 'contentChanges': [{'text': "def main():\n a = 1\n b = a + 2\n"}],
|
||||
\ 'textDocument': {
|
||||
\ 'uri': ale#path#ToURI(expand('%:p')),
|
||||
\ 'version': g:ale_lsp_next_version_id - 1,
|
||||
\ },
|
||||
\ }],
|
||||
\ [0, 'textDocument/codeAction', {
|
||||
\ 'context': {
|
||||
\ 'diagnostics': [{'range': {'end': {'character': 5, 'line': 1}, 'start': {'character': 4, 'line': 1}}, 'code': 2304, 'message': 'oops'}]
|
||||
\ 'diagnostics': [{'range': {'end': {'character': 6, 'line': 1}, 'start': {'character': 4, 'line': 1}}, 'code': 2304, 'message': 'oops'}]
|
||||
\ },
|
||||
\ 'range': {'end': {'character': 5, 'line': 1}, 'start': {'character': 4, 'line': 1}},
|
||||
\ 'textDocument': {'uri': ale#path#ToURI(expand('%:p'))}
|
||||
\ }]
|
||||
\ ],
|
||||
\ g:message_list
|
||||
\ g:message_list[-1:]
|
||||
|
||||
Execute(LSP code action requests should be sent only for error with code):
|
||||
call ale#linter#Reset()
|
||||
@@ -585,20 +538,12 @@ Execute(LSP code action requests should be sent only for error with code):
|
||||
\ string(g:Callback)
|
||||
AssertEqual
|
||||
\ [
|
||||
\ [1, 'workspace/didChangeConfiguration', {'settings': {'python': {}}}],
|
||||
\ [1, 'textDocument/didChange', {
|
||||
\ 'contentChanges': [{'text': "def main():\n a = 1\n b = a + 2\n"}],
|
||||
\ 'textDocument': {
|
||||
\ 'uri': ale#path#ToURI(expand('%:p')),
|
||||
\ 'version': g:ale_lsp_next_version_id - 1,
|
||||
\ },
|
||||
\ }],
|
||||
\ [0, 'textDocument/codeAction', {
|
||||
\ 'context': {
|
||||
\ 'diagnostics': [{'range': {'end': {'character': 5, 'line': 1}, 'start': {'character': 4, 'line': 1}}, 'code': 2304, 'message': 'oops'}]
|
||||
\ 'diagnostics': [{'range': {'end': {'character': 6, 'line': 1}, 'start': {'character': 4, 'line': 1}}, 'code': 2304, 'message': 'oops'}]
|
||||
\ },
|
||||
\ 'range': {'end': {'character': 5, 'line': 1}, 'start': {'character': 4, 'line': 1}},
|
||||
\ 'textDocument': {'uri': ale#path#ToURI(expand('%:p'))}
|
||||
\ }]
|
||||
\ ],
|
||||
\ g:message_list
|
||||
\ g:message_list[-1:]
|
||||
|
||||
@@ -101,7 +101,7 @@ Execute(tsserver quickinfo responses will null missing bodies should be handled)
|
||||
AssertEqual {}, ale#hover#GetMap()
|
||||
|
||||
Execute(tsserver quickinfo displayString values should be displayed):
|
||||
call ale#hover#SetMap({3: {}})
|
||||
call ale#hover#SetMap({3: {'buffer': bufnr('')}})
|
||||
call ale#hover#HandleTSServerResponse(
|
||||
\ 1,
|
||||
\ {
|
||||
@@ -169,7 +169,7 @@ Execute(LSP hover response with lists of strings and marked strings should be ha
|
||||
AssertEqual {}, ale#hover#GetMap()
|
||||
|
||||
Execute(tsserver responses for documentation requests should be handled):
|
||||
call ale#hover#SetMap({3: {'show_documentation': 1}})
|
||||
call ale#hover#SetMap({3: {'show_documentation': 1, 'buffer': bufnr('')}})
|
||||
|
||||
call ale#hover#HandleTSServerResponse(
|
||||
\ 1,
|
||||
|
||||
@@ -35,7 +35,7 @@ After:
|
||||
Execute(The file changed event function should set b:ale_file_changed):
|
||||
let g:ale_lint_on_enter = 0
|
||||
|
||||
if has('gui')
|
||||
if has('gui_running')
|
||||
new
|
||||
else
|
||||
e test
|
||||
|
||||
@@ -269,7 +269,7 @@ Execute(tsserver rename requests should be sent):
|
||||
\ }]
|
||||
\ ],
|
||||
\ g:message_list
|
||||
AssertEqual {'42': {'old_name': 'somelongerline', 'new_name': 'a-new-name', 'force_save': 0}},
|
||||
AssertEqual {'42': {'old_name': 'somelongerline', 'new_name': 'a-new-name'}},
|
||||
\ ale#rename#GetMap()
|
||||
|
||||
Given python(Some Python file):
|
||||
@@ -470,7 +470,7 @@ Execute(LSP rename requests should be sent):
|
||||
let b:ale_linters = ['pyls']
|
||||
call setpos('.', [bufnr(''), 1, 5, 0])
|
||||
|
||||
ALERename!
|
||||
ALERename
|
||||
|
||||
" We shouldn't register the callback yet.
|
||||
AssertEqual '''''', string(g:Callback)
|
||||
@@ -500,5 +500,5 @@ Execute(LSP rename requests should be sent):
|
||||
\ ],
|
||||
\ g:message_list
|
||||
|
||||
AssertEqual {'42': {'old_name': 'foo', 'new_name': 'a-new-name', 'force_save': 1}},
|
||||
AssertEqual {'42': {'old_name': 'foo', 'new_name': 'a-new-name'}},
|
||||
\ ale#rename#GetMap()
|
||||
|
||||
@@ -127,3 +127,51 @@ Execute(The dash dialect should be used for the shell and the base function):
|
||||
|
||||
Execute(dash should be used for shellcheck):
|
||||
AssertEqual 'dash', ale#handlers#shellcheck#GetDialectArgument(bufnr(''))
|
||||
|
||||
Given(A file with a Bash shellcheck shell directive):
|
||||
# shellcheck shell=bash
|
||||
|
||||
Execute(bash dialect should be detected appropriately):
|
||||
AssertEqual 'bash', ale#handlers#shellcheck#GetDialectArgument(bufnr(''))
|
||||
|
||||
Given(A file with a sh shellcheck shell directive):
|
||||
#shellcheck shell=sh
|
||||
|
||||
Execute(sh dialect should be detected appropriately):
|
||||
AssertEqual 'sh', ale#handlers#shellcheck#GetDialectArgument(bufnr(''))
|
||||
|
||||
Given(A file with a tcsh shellcheck shell directive):
|
||||
# shellcheck shell=tcsh
|
||||
|
||||
Execute(tcsh dialect should be detected appropriately):
|
||||
AssertEqual 'tcsh', ale#handlers#shellcheck#GetDialectArgument(bufnr(''))
|
||||
|
||||
Given(A file with a zsh shellcheck shell directive):
|
||||
# shellcheck shell=zsh
|
||||
|
||||
Execute(zsh dialect should be detected appropriately):
|
||||
AssertEqual 'zsh', ale#handlers#shellcheck#GetDialectArgument(bufnr(''))
|
||||
|
||||
Given(A file with a csh shellcheck shell directive):
|
||||
# shellcheck shell=csh
|
||||
|
||||
Execute(zsh dialect should be detected appropriately):
|
||||
AssertEqual 'csh', ale#handlers#shellcheck#GetDialectArgument(bufnr(''))
|
||||
|
||||
Given(A file with a ksh shellcheck shell directive):
|
||||
# shellcheck shell=ksh
|
||||
|
||||
Execute(ksh dialect should be detected appropriately):
|
||||
AssertEqual 'ksh', ale#handlers#shellcheck#GetDialectArgument(bufnr(''))
|
||||
|
||||
Given(A file with a dash shellcheck shell directive):
|
||||
# shellcheck shell=dash
|
||||
|
||||
Execute(dash dialect should be detected appropriately):
|
||||
AssertEqual 'dash', ale#handlers#shellcheck#GetDialectArgument(bufnr(''))
|
||||
|
||||
Given(A file with a ash shellcheck shell directive):
|
||||
# shellcheck shell=ash
|
||||
|
||||
Execute(dash dialect should be detected for ash that shellcheck does not support):
|
||||
AssertEqual 'dash', ale#handlers#shellcheck#GetDialectArgument(bufnr(''))
|
||||
|
||||
Reference in New Issue
Block a user