mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-10 06:21:53 +08:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -54,6 +54,7 @@ Execute(VersionCheck should return correct version):
|
||||
|
||||
Execute(The eclipselsp callback should return the correct default value):
|
||||
let cmd = [ ale#Escape('java'),
|
||||
\ '',
|
||||
\ '-Declipse.application=org.eclipse.jdt.ls.core.id1',
|
||||
\ '-Dosgi.bundles.defaultStartLevel=4',
|
||||
\ '-Declipse.product=org.eclipse.jdt.ls.core.product',
|
||||
@@ -72,6 +73,7 @@ Execute(The eclipselsp callback should return the correct default value):
|
||||
Execute(The eclipselsp callback should allow custom executable):
|
||||
let b:ale_java_eclipselsp_executable='/bin/foobar'
|
||||
let cmd = [ ale#Escape('/bin/foobar'),
|
||||
\ '',
|
||||
\ '-Declipse.application=org.eclipse.jdt.ls.core.id1',
|
||||
\ '-Dosgi.bundles.defaultStartLevel=4',
|
||||
\ '-Declipse.product=org.eclipse.jdt.ls.core.product',
|
||||
@@ -87,9 +89,12 @@ Execute(The eclipselsp callback should allow custom executable):
|
||||
\]
|
||||
AssertLinter '/bin/foobar', join(cmd, ' ')
|
||||
|
||||
Execute(The eclipselsp callback should allow custom configuration path):
|
||||
Execute(The eclipselsp callback should allow custom configuration path and javaagent):
|
||||
let b:ale_java_eclipselsp_config_path = '/home/config'
|
||||
let b:ale_java_eclipselsp_javaagent = '/home/lombok.jar /home/lombok2.jar'
|
||||
let cmd = [ ale#Escape('java'),
|
||||
\ ale#Escape('-javaagent:/home/lombok.jar'),
|
||||
\ ale#Escape('-javaagent:/home/lombok2.jar'),
|
||||
\ '-Declipse.application=org.eclipse.jdt.ls.core.id1',
|
||||
\ '-Dosgi.bundles.defaultStartLevel=4',
|
||||
\ '-Declipse.product=org.eclipse.jdt.ls.core.product',
|
||||
|
||||
@@ -31,7 +31,7 @@ After:
|
||||
Execute(The javac callback should return the correct default value):
|
||||
AssertLinter 'javac', g:prefix . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
|
||||
|
||||
Execute(The javac callback should use g:ale_java_javac_classpath correctly):
|
||||
Execute(The javac callback should use string type g:ale_java_javac_classpath correctly):
|
||||
let g:ale_java_javac_classpath = 'foo.jar'
|
||||
|
||||
AssertLinter 'javac',
|
||||
@@ -39,6 +39,14 @@ Execute(The javac callback should use g:ale_java_javac_classpath correctly):
|
||||
\ . ' -cp ' . ale#Escape('foo.jar')
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
|
||||
|
||||
Execute(The javac callback should use list type g:ale_java_javac_classpath correctly):
|
||||
let g:ale_java_javac_classpath = ['foo.jar']
|
||||
|
||||
AssertLinter 'javac',
|
||||
\ g:prefix
|
||||
\ . ' -cp ' . ale#Escape('foo.jar')
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
|
||||
|
||||
Execute(The executable should be configurable):
|
||||
let g:ale_java_javac_executable = 'foobar'
|
||||
|
||||
@@ -108,6 +116,137 @@ Execute(The javac callback should combine discovered classpaths and manual ones)
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
|
||||
\ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
|
||||
|
||||
let g:ale_java_javac_classpath = ['configured.jar']
|
||||
let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [
|
||||
\ '[DEBUG] Ignore this.',
|
||||
\ '[INFO] Something we should ignore.',
|
||||
\ '/foo/bar.jar',
|
||||
\ '/xyz/abc.jar',
|
||||
\], {})
|
||||
|
||||
AssertEqual
|
||||
\ g:prefix
|
||||
\ . ' -cp '
|
||||
\ . ale#Escape(join(
|
||||
\ [
|
||||
\ '/foo/bar.jar',
|
||||
\ '/xyz/abc.jar',
|
||||
\ 'configured.jar',
|
||||
\ ],
|
||||
\ g:cp_sep
|
||||
\ ))
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
|
||||
\ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
|
||||
|
||||
let g:ale_java_javac_classpath = ['configured.jar', 'configured2.jar']
|
||||
let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [
|
||||
\ '[DEBUG] Ignore this.',
|
||||
\ '[INFO] Something we should ignore.',
|
||||
\ '/foo/bar.jar',
|
||||
\ '/xyz/abc.jar',
|
||||
\], {})
|
||||
|
||||
AssertEqual
|
||||
\ g:prefix
|
||||
\ . ' -cp '
|
||||
\ . ale#Escape(join(
|
||||
\ [
|
||||
\ '/foo/bar.jar',
|
||||
\ '/xyz/abc.jar',
|
||||
\ 'configured.jar',
|
||||
\ 'configured2.jar',
|
||||
\ ],
|
||||
\ g:cp_sep
|
||||
\ ))
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
|
||||
\ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
|
||||
|
||||
Execute(The javac callback should use string type g:ale_java_javac_sourcepath correctly):
|
||||
let g:ale_java_javac_sourcepath = 'java_paths/build/gen/main'
|
||||
|
||||
AssertLinter 'javac',
|
||||
\ g:prefix
|
||||
\ . ' -sourcepath ' . ale#Escape(
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/build/gen/main/')
|
||||
\ )
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
|
||||
|
||||
Execute(The javac callback should use list type g:ale_java_javac_sourcepath correctly):
|
||||
let g:ale_java_javac_sourcepath = ['java_paths/build/gen/main']
|
||||
|
||||
AssertLinter 'javac',
|
||||
\ g:prefix
|
||||
\ . ' -sourcepath ' . ale#Escape(
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/build/gen/main/')
|
||||
\ )
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
|
||||
|
||||
Execute(The javac callback shouldn't add -sourcepath when g:ale_java_javac_sourcepath variable path doesn't exist):
|
||||
let g:ale_java_javac_sourcepath = 'java_paths/build/gen3/main'
|
||||
|
||||
AssertLinter 'javac',
|
||||
\ g:prefix
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
|
||||
|
||||
Execute(The javac callback should combine discovered sourcepath and manual ones):
|
||||
call ale#engine#Cleanup(bufnr(''))
|
||||
call ale#test#SetFilename('java_paths/src/main/java/com/something/dummy.java')
|
||||
call ale#engine#InitBufferInfo(bufnr(''))
|
||||
|
||||
let g:ale_java_javac_sourcepath = 'java_paths/build/gen/main'
|
||||
let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [], {})
|
||||
|
||||
AssertEqual
|
||||
\ ale#path#CdString(expand('%:p:h')) . ale#Escape('javac') . ' -Xlint'
|
||||
\ . ' -sourcepath ' . ale#Escape(join([
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/src/main/java/'),
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/build/gen/main/'),
|
||||
\ ], g:cp_sep))
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
|
||||
\ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
|
||||
|
||||
let g:ale_java_javac_sourcepath = 'java_paths/build/gen/main'
|
||||
\ . g:cp_sep . 'java_paths/build/gen2/main'
|
||||
let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [], {})
|
||||
|
||||
AssertEqual
|
||||
\ ale#path#CdString(expand('%:p:h')) . ale#Escape('javac') . ' -Xlint'
|
||||
\ . ' -sourcepath ' . ale#Escape(join([
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/src/main/java/'),
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/build/gen/main/'),
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/build/gen2/main/')
|
||||
\ ], g:cp_sep))
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
|
||||
\ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
|
||||
|
||||
let g:ale_java_javac_sourcepath = ['java_paths/build/gen/main']
|
||||
let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [], {})
|
||||
|
||||
AssertEqual
|
||||
\ ale#path#CdString(expand('%:p:h')) . ale#Escape('javac') . ' -Xlint'
|
||||
\ . ' -sourcepath ' . ale#Escape(join([
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/src/main/java/'),
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/build/gen/main/')
|
||||
\ ], g:cp_sep))
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
|
||||
\ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
|
||||
|
||||
let g:ale_java_javac_sourcepath = [
|
||||
\ 'java_paths/build/gen/main',
|
||||
\ 'java_paths/build/gen2/main'
|
||||
\ ]
|
||||
let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [], {})
|
||||
|
||||
AssertEqual
|
||||
\ ale#path#CdString(expand('%:p:h')) . ale#Escape('javac') . ' -Xlint'
|
||||
\ . ' -sourcepath ' . ale#Escape(join([
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/src/main/java/'),
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/build/gen/main/'),
|
||||
\ ale#path#Simplify(g:dir . '/java_paths/build/gen2/main/')
|
||||
\ ], g:cp_sep))
|
||||
\ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
|
||||
\ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
|
||||
|
||||
Execute(The javac callback should detect source directories):
|
||||
call ale#engine#Cleanup(bufnr(''))
|
||||
noautocmd e! java_paths/src/main/java/com/something/dummy
|
||||
|
||||
@@ -52,6 +52,15 @@ Execute(The mypy callbacks should detect virtualenv directories and switch to th
|
||||
\ . ' --show-column-numbers '
|
||||
\ . '--shadow-file %s %t %s'
|
||||
|
||||
Execute(The mypy callbacks should cd to directory containing mypy.ini if found):
|
||||
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_mypy_ini_and_pytest_ini/tests/testsubfolder/my_tests.py')
|
||||
|
||||
AssertLinter 'mypy',
|
||||
\ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/with_mypy_ini_and_pytest_ini'))
|
||||
\ . ale#Escape('mypy')
|
||||
\ . ' --show-column-numbers '
|
||||
\ . '--shadow-file %s %t %s'
|
||||
|
||||
Execute(You should able able to use the global mypy instead):
|
||||
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
|
||||
let g:ale_python_mypy_use_global = 1
|
||||
|
||||
30
test/command_callback/test_revive_command_callbacks.vader
Normal file
30
test/command_callback/test_revive_command_callbacks.vader
Normal file
@@ -0,0 +1,30 @@
|
||||
Before:
|
||||
Save g:ale_go_go111module
|
||||
|
||||
call ale#assert#SetUpLinterTest('go', 'revive')
|
||||
|
||||
After:
|
||||
Restore
|
||||
|
||||
unlet! b:ale_go_go111module
|
||||
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(The default revive command should be correct):
|
||||
AssertLinter 'revive', ale#Escape('revive') . ' %t'
|
||||
|
||||
Execute(The revive executable should be configurable):
|
||||
let b:ale_go_revive_executable = 'foobar'
|
||||
|
||||
AssertLinter 'foobar', ale#Escape('foobar') . ' %t'
|
||||
|
||||
Execute(The revive options should be configurable):
|
||||
let b:ale_go_revive_options = '--foo'
|
||||
|
||||
AssertLinter 'revive', ale#Escape('revive') . ' --foo %t'
|
||||
|
||||
Execute(The revive command should support Go environment variables):
|
||||
let b:ale_go_go111module = 'on'
|
||||
|
||||
AssertLinter 'revive',
|
||||
\ ale#Env('GO111MODULE', 'on') . ale#Escape('revive') . ' %t'
|
||||
20
test/command_callback/test_rust_analyzer_callbacks.vader
Normal file
20
test/command_callback/test_rust_analyzer_callbacks.vader
Normal file
@@ -0,0 +1,20 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('rust', 'analyzer')
|
||||
|
||||
After:
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(The default executable path should be correct):
|
||||
AssertLinter 'rust-analyzer', ale#Escape('rust-analyzer')
|
||||
|
||||
Execute(The project root should be detected correctly):
|
||||
AssertLSPProject ''
|
||||
|
||||
call ale#test#SetFilename('rust-rls-project/test.rs')
|
||||
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/rust-rls-project')
|
||||
|
||||
Execute(Should accept configuration settings):
|
||||
AssertLSPConfig {}
|
||||
let b:ale_rust_analyzer_config = {'rust': {'clippy_preference': 'on'}}
|
||||
AssertLSPConfig {'rust': {'clippy_preference': 'on'}}
|
||||
43
test/command_callback/test_standardts_command_callback.vader
Normal file
43
test/command_callback/test_standardts_command_callback.vader
Normal file
@@ -0,0 +1,43 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('typescript', 'standard')
|
||||
call ale#test#SetFilename('testfile.js')
|
||||
unlet! b:executable
|
||||
|
||||
After:
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(bin/cmd.js paths should be preferred):
|
||||
call ale#test#SetFilename('standard-test-files/with-cmd/testfile.js')
|
||||
|
||||
let b:executable = ale#path#Simplify(
|
||||
\ g:dir
|
||||
\ . '/standard-test-files/with-cmd/node_modules/standard/bin/cmd.js'
|
||||
\)
|
||||
|
||||
AssertLinter b:executable,
|
||||
\ (has('win32') ? 'node.exe ' : '')
|
||||
\ . ale#Escape(b:executable)
|
||||
\ . ' --stdin %s'
|
||||
|
||||
Execute(.bin directories should be used too):
|
||||
call ale#test#SetFilename('standard-test-files/with-bin/testfile.js')
|
||||
|
||||
let b:executable = ale#path#Simplify(
|
||||
\ g:dir
|
||||
\ . '/standard-test-files/with-bin/node_modules/.bin/standard'
|
||||
\)
|
||||
|
||||
AssertLinter b:executable, ale#Escape(b:executable) . ' --stdin %s'
|
||||
|
||||
Execute(The global executable should be used otherwise):
|
||||
AssertLinter 'standard', ale#Escape('standard') . ' --stdin %s'
|
||||
|
||||
Execute(The global executable should be configurable):
|
||||
let b:ale_typescript_standard_executable = 'foobar'
|
||||
|
||||
AssertLinter 'foobar', ale#Escape('foobar') . ' --stdin %s'
|
||||
|
||||
Execute(The options should be configurable):
|
||||
let b:ale_typescript_standard_options = '--wat'
|
||||
|
||||
AssertLinter 'standard', ale#Escape('standard') . ' --wat --stdin %s'
|
||||
@@ -0,0 +1,48 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('terraform', 'terraform_lsp')
|
||||
|
||||
After:
|
||||
if isdirectory(g:dir . '/.terraform')
|
||||
call delete(g:dir . '/.terraform', 'd')
|
||||
endif
|
||||
|
||||
unlet! b:ale_terraform_langserver_executable
|
||||
unlet! b:ale_terraform_langserver_options
|
||||
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(Should send correct LSP language):
|
||||
AssertLSPLanguage 'terraform'
|
||||
|
||||
Execute(Should load default executable):
|
||||
AssertLinter 'terraform-lsp', ale#Escape('terraform-lsp')
|
||||
|
||||
Execute(Should configure custom executable):
|
||||
let b:ale_terraform_langserver_executable = 'foo'
|
||||
AssertLinter 'foo', ale#Escape('foo')
|
||||
|
||||
Execute(Should set custom options):
|
||||
let b:ale_terraform_langserver_options = '--bar'
|
||||
|
||||
AssertLinter 'terraform-lsp',
|
||||
\ ale#Escape('terraform-lsp') . ' --bar'
|
||||
|
||||
Execute(Should return current directory if it contains .terraform directory):
|
||||
call mkdir(g:dir . '/.terraform')
|
||||
AssertLSPProject g:dir
|
||||
|
||||
Execute(Should return nearest directory with .terraform if found in parent directory):
|
||||
call ale#test#SetFilename('../terraform_files/main.tf')
|
||||
|
||||
let b:parent_dir = ale#path#Simplify(g:dir . '/..')
|
||||
let b:tf_dir = b:parent_dir . '/.terraform'
|
||||
|
||||
if !isdirectory(b:tf_dir)
|
||||
call mkdir(b:tf_dir)
|
||||
endif
|
||||
|
||||
AssertLSPProject b:parent_dir
|
||||
|
||||
call delete(b:tf_dir, 'd')
|
||||
unlet!b:parent_dir
|
||||
unlet!b:tf_dir
|
||||
76
test/command_callback/test_vim_vimls.vader
Normal file
76
test/command_callback/test_vim_vimls.vader
Normal file
@@ -0,0 +1,76 @@
|
||||
" Author: Jeffrey Lau https://github.com/zoonfafer
|
||||
" Description: Tests for the Vim vimls linter
|
||||
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('vim', 'vimls')
|
||||
|
||||
After:
|
||||
if isdirectory(g:dir . '/.git')
|
||||
call delete(g:dir . '/.git', 'd')
|
||||
endif
|
||||
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(should set correct defaults):
|
||||
AssertLinter 'vim-language-server', ale#Escape('vim-language-server') . ' --stdio'
|
||||
|
||||
Execute(should set correct LSP values):
|
||||
call ale#test#SetFilename('vim_fixtures/path_with_autoload/test.vim')
|
||||
AssertLSPLanguage 'vim'
|
||||
AssertLSPOptions {}
|
||||
AssertLSPConfig {}
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/vim_fixtures/path_with_autoload')
|
||||
|
||||
Execute(should set correct project for .git/):
|
||||
let b:parent_dir = ale#path#Simplify(g:dir . '/..')
|
||||
let b:git_dir = b:parent_dir . '/.git'
|
||||
|
||||
call ale#test#SetFilename('vim_fixtures/test.vim')
|
||||
|
||||
if !isdirectory(b:git_dir)
|
||||
call mkdir(b:git_dir)
|
||||
endif
|
||||
|
||||
AssertLSPProject ale#path#Simplify(b:parent_dir)
|
||||
|
||||
call delete(b:git_dir, 'd')
|
||||
unlet! b:git_dir
|
||||
|
||||
Execute(should set correct project for plugin/):
|
||||
call ale#test#SetFilename('vim_fixtures/path_with_plugin/test.vim')
|
||||
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/vim_fixtures/path_with_plugin')
|
||||
|
||||
Execute(should accept configuration settings):
|
||||
AssertLSPConfig {}
|
||||
|
||||
let b:ale_vim_vimls_config = {'vim': {'foobar': v:true}}
|
||||
AssertLSPConfig {'vim': {'foobar': v:true}}
|
||||
|
||||
Execute(should set correct project for .vimrc):
|
||||
call ale#test#SetFilename('vim_fixtures/path_with_vimrc/.vimrc')
|
||||
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/vim_fixtures/path_with_vimrc')
|
||||
|
||||
Execute(should set correct project for init.vim):
|
||||
call ale#test#SetFilename('vim_fixtures/path_with_initvim/init.vim')
|
||||
|
||||
AssertLSPProject ale#path#Simplify(g:dir . '/vim_fixtures/path_with_initvim')
|
||||
|
||||
Execute(should use the local executable when available):
|
||||
call ale#test#SetFilename('vim_fixtures/file.vim')
|
||||
|
||||
AssertLinter ale#path#Simplify(g:dir . '/vim_fixtures/node_modules/.bin/vim-language-server'),
|
||||
\ ale#Escape(ale#path#Simplify(g:dir . '/vim_fixtures/node_modules/.bin/vim-language-server')) . ' --stdio'
|
||||
|
||||
Execute(should let the global executable to be used):
|
||||
let g:ale_vim_vimls_use_global = 1
|
||||
call ale#test#SetFilename('vim_fixtures/file.vim')
|
||||
|
||||
AssertLinter 'vim-language-server',
|
||||
\ ale#Escape('vim-language-server') . ' --stdio'
|
||||
|
||||
Execute(should let the executable to be configured):
|
||||
let g:ale_vim_vimls_executable = 'foobar'
|
||||
|
||||
AssertLinter 'foobar', ale#Escape('foobar') . ' --stdio'
|
||||
0
test/command_callback/vim_fixtures/node_modules/.bin/vim-language-server
generated
vendored
Normal file
0
test/command_callback/vim_fixtures/node_modules/.bin/vim-language-server
generated
vendored
Normal file
Reference in New Issue
Block a user