mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-07 21:24:33 +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:
committed by
GitHub
parent
8b8ddea6e5
commit
1c5b84f375
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user