Fix FindCompileCommands to handle absolute paths in c_build_dir_names

Use ale#path#GetAbsPath to resolve build directory paths, which correctly
handles both absolute and relative paths. When the dirname is absolute,
derive the project root from the parent of the build directory.

Co-authored-by: w0rp <3518142+w0rp@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-02-12 00:24:39 +00:00
parent 7f79d30fb9
commit 520c775c6a
2 changed files with 42 additions and 2 deletions

View File

@@ -0,0 +1,33 @@
Before:
Save g:ale_c_build_dir_names
call ale#test#SetDirectory('/testplugin/test')
After:
Restore
call ale#test#RestoreDirectory()
Execute(FindCompileCommands should find compile_commands.json with relative build dir names):
call ale#test#SetFilename('test-files/c/json_project/subdir/dummy')
let g:ale_c_build_dir_names = ['build']
AssertEqual
\ [
\ ale#path#Simplify(g:dir . '/test-files/c/json_project'),
\ ale#path#Simplify(g:dir . '/test-files/c/json_project/build/compile_commands.json'),
\ ],
\ ale#c#FindCompileCommands(bufnr(''))
Execute(FindCompileCommands should find compile_commands.json with absolute build dir names):
call ale#test#SetFilename('test-files/c/json_project/subdir/dummy')
let g:ale_c_build_dir_names = [ale#path#Simplify(g:dir . '/test-files/c/json_project/build')]
AssertEqual
\ [
\ ale#path#Simplify(g:dir . '/test-files/c/json_project'),
\ ale#path#Simplify(g:dir . '/test-files/c/json_project/build/compile_commands.json'),
\ ],
\ ale#c#FindCompileCommands(bufnr(''))