diff options
author | w0rp <devw0rp@gmail.com> | 2017-09-11 21:53:45 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-09-11 21:54:59 +0100 |
commit | 8a374a69a3b4059807ab6e63c2d6a70c99db06bc (patch) | |
tree | db55ba4ce9431d02a859568d81d048647fd43447 | |
parent | 68bae8a1d1644fba3e1ec53729266176e63ac8b9 (diff) | |
download | ale-8a374a69a3b4059807ab6e63c2d6a70c99db06bc.zip |
Fix #922 - Prefer nearer ESLint configuration files with lower precedence filenames for eslint --fix
-rw-r--r-- | autoload/ale/fixers/eslint.vim | 26 | ||||
-rw-r--r-- | test/eslint-test-files/react-app/subdir-with-config/.eslintrc | 0 | ||||
-rw-r--r-- | test/fixers/test_eslint_fixer_callback.vader | 14 |
3 files changed, 20 insertions, 20 deletions
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 --- /dev/null +++ b/test/eslint-test-files/react-app/subdir-with-config/.eslintrc 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('')) |