diff --git a/autoload/ale/fixers/eslint.vim b/autoload/ale/fixers/eslint.vim index 892b30d3..9c985622 100644 --- a/autoload/ale/fixers/eslint.vim +++ b/autoload/ale/fixers/eslint.vim @@ -2,19 +2,21 @@ " Description: Fixing files with eslint. function! s:FindConfig(buffer) abort - for l:filename in [ - \ '.eslintrc.js', - \ '.eslintrc.yaml', - \ '.eslintrc.yml', - \ '.eslintrc.json', - \ '.eslintrc', - \ 'package.json', - \] - let l:config = ale#path#FindNearestFile(a:buffer, l:filename) + for l:path in ale#path#Upwards(expand('#' . a:buffer . ':p:h')) + for l:basename in [ + \ '.eslintrc.js', + \ '.eslintrc.yaml', + \ '.eslintrc.yml', + \ '.eslintrc.json', + \ '.eslintrc', + \ 'package.json', + \] + let l:config = ale#path#Simplify(l:path . '/' . l:basename) - if !empty(l:config) - return l:config - endif + if filereadable(l:config) + return l:config + endif + endfor endfor return '' diff --git a/test/eslint-test-files/react-app/subdir-with-config/.eslintrc b/test/eslint-test-files/react-app/subdir-with-config/.eslintrc new file mode 100644 index 00000000..e69de29b diff --git a/test/fixers/test_eslint_fixer_callback.vader b/test/fixers/test_eslint_fixer_callback.vader index 218461db..035f67e3 100644 --- a/test/fixers/test_eslint_fixer_callback.vader +++ b/test/fixers/test_eslint_fixer_callback.vader @@ -17,18 +17,16 @@ Execute(The path to eslint.js should be run on Unix): \ . ' --fix %t', \ }, \ ale#fixers#eslint#Fix(bufnr('')) + \ +Execute(The lower priority configuration file in a nested directory should be preferred): + call ale#test#SetFilename('../eslint-test-files/react-app/subdir-with-config/testfile.js') -Execute(The eslint fixer with eslint.js should be run with node on Windows): - call ale#test#SetFilename('../eslint-test-files/react-app/subdir/testfile.js') - let g:ale_has_override['win32'] = 1 - - " We have to execute the file with node. AssertEqual \ { \ 'read_temporary_file': 1, - \ 'command': ale#Escape('node.exe') . ' ' - \ . ale#Escape(simplify(g:dir . '/../eslint-test-files/react-app/node_modules/eslint/bin/eslint.js')) - \ . ' --config ' . ale#Escape(simplify(g:dir . '/../eslint-test-files/react-app/.eslintrc.js')) + \ 'command': + \ ale#Escape(simplify(g:dir . '/../eslint-test-files/react-app/node_modules/eslint/bin/eslint.js')) + \ . ' --config ' . ale#Escape(simplify(g:dir . '/../eslint-test-files/react-app/subdir-with-config/.eslintrc')) \ . ' --fix %t', \ }, \ ale#fixers#eslint#Fix(bufnr(''))