mirror of
https://github.com/dense-analysis/ale.git
synced 2026-10-12 16:10:13 +08:00
Update project root detection for erlang_ls linter (#4619)
* Refactor erlang_ls linter tests * Add Rebar3 _checkouts support for erlang_ls linter * Add Erlang.mk support for erlang_ls linter
This commit is contained in:
1 parent
8b8ddea6e5
commit
1c5b84f375
9 files changed
+41
-12
No files matched your search
@@ -21,7 +21,14 @@ function! s:GetCommand(buffer) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:FindProjectRoot(buffer) abort
|
function! s:FindProjectRoot(buffer) abort
|
||||||
let l:markers = ['_build/', 'erlang_ls.config', 'rebar.lock']
|
let l:markers = [
|
||||||
|
\ '_checkouts/',
|
||||||
|
\ '_build/',
|
||||||
|
\ 'deps/',
|
||||||
|
\ 'erlang_ls.config',
|
||||||
|
\ 'rebar.lock',
|
||||||
|
\ 'erlang.mk',
|
||||||
|
\]
|
||||||
|
|
||||||
" This is a way to find Erlang/OTP root (the one that is managed
|
" This is a way to find Erlang/OTP root (the one that is managed
|
||||||
" by kerl or asdf). Useful if :ALEGoToDefinition takes us there.
|
" by kerl or asdf). Useful if :ALEGoToDefinition takes us there.
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
Before:
|
Before:
|
||||||
let b:files = '../test-files/erlang'
|
|
||||||
call ale#assert#SetUpLinterTest('erlang', 'erlang_ls')
|
call ale#assert#SetUpLinterTest('erlang', 'erlang_ls')
|
||||||
|
|
||||||
After:
|
After:
|
||||||
|
unlet! b:root
|
||||||
|
|
||||||
call ale#assert#TearDownLinterTest()
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
Execute(The default command should be correct):
|
Execute(The default command should be correct):
|
||||||
@@ -30,19 +31,40 @@ Execute(Log directory should be configurable):
|
|||||||
\ . ' --log-level=' . ale#Escape('info')
|
\ . ' --log-level=' . ale#Escape('info')
|
||||||
|
|
||||||
Execute(Project root should be detected using erlang_ls.config):
|
Execute(Project root should be detected using erlang_ls.config):
|
||||||
call ale#test#SetFilename(b:files . '/app_with_erlang_ls_config/src/app.erl')
|
let b:root = '../test-files/erlang/app_with_erlang_ls_config'
|
||||||
AssertLSPProject ale#test#GetFilename(b:files . '/app_with_erlang_ls_config')
|
|
||||||
|
|
||||||
call ale#test#SetFilename(b:files . '/app_with_erlang_ls_config/_build/default/lib/dep/src/dep.erl')
|
call ale#test#SetFilename(b:root . '/src/app.erl')
|
||||||
AssertLSPProject ale#test#GetFilename(b:files . '/app_with_erlang_ls_config')
|
AssertLSPProject ale#test#GetFilename(b:root)
|
||||||
|
|
||||||
|
call ale#test#SetFilename(b:root . '/_build/default/lib/dep/src/dep.erl')
|
||||||
|
AssertLSPProject ale#test#GetFilename(b:root)
|
||||||
|
|
||||||
|
call ale#test#SetFilename(b:root . '/deps/dep/src/dep.erl')
|
||||||
|
AssertLSPProject ale#test#GetFilename(b:root)
|
||||||
|
|
||||||
Execute(Root of Rebar3 project should be detected):
|
Execute(Root of Rebar3 project should be detected):
|
||||||
call ale#test#SetFilename(b:files . '/app/src/app.erl')
|
let b:root = '../test-files/erlang/rebar3_app'
|
||||||
AssertLSPProject ale#test#GetFilename(b:files . '/app')
|
|
||||||
|
|
||||||
call ale#test#SetFilename(b:files . '/app/_build/default/lib/dep/src/dep.erl')
|
call ale#test#SetFilename(b:root . '/src/app.erl')
|
||||||
AssertLSPProject ale#test#GetFilename(b:files . '/app')
|
AssertLSPProject ale#test#GetFilename(b:root)
|
||||||
|
|
||||||
|
call ale#test#SetFilename(b:root . '/_build/default/lib/dep/src/dep.erl')
|
||||||
|
AssertLSPProject ale#test#GetFilename(b:root)
|
||||||
|
|
||||||
|
call ale#test#SetFilename(b:root . '/_checkouts/dep/src/dep.erl')
|
||||||
|
AssertLSPProject ale#test#GetFilename(b:root)
|
||||||
|
|
||||||
|
Execute(Root of Erlang.mk project should be detected):
|
||||||
|
let b:root = '../test-files/erlang/erlang_mk_app'
|
||||||
|
|
||||||
|
call ale#test#SetFilename(b:root . '/src/app.erl')
|
||||||
|
AssertLSPProject ale#test#GetFilename(b:root)
|
||||||
|
|
||||||
|
call ale#test#SetFilename(b:root . '/deps/dep/src/dep.erl')
|
||||||
|
AssertLSPProject ale#test#GetFilename(b:root)
|
||||||
|
|
||||||
Execute(Root of kerl managed Erlang/OTP installation should be detected):
|
Execute(Root of kerl managed Erlang/OTP installation should be detected):
|
||||||
call ale#test#SetFilename(b:files . '/kerl_otp_root/lib/stdlib-4.1.1/array.erl')
|
let b:root = '../test-files/erlang/kerl_otp_root'
|
||||||
AssertLSPProject ale#test#GetFilename(b:files . '/kerl_otp_root')
|
|
||||||
|
call ale#test#SetFilename(b:root . '/lib/stdlib-4.1.1/array.erl')
|
||||||
|
AssertLSPProject ale#test#GetFilename(b:root)
|
||||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Reference in new issue
Block a user