summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-09-11 21:53:45 +0100
committerw0rp <devw0rp@gmail.com>2017-09-11 21:54:59 +0100
commit8a374a69a3b4059807ab6e63c2d6a70c99db06bc (patch)
treedb55ba4ce9431d02a859568d81d048647fd43447
parent68bae8a1d1644fba3e1ec53729266176e63ac8b9 (diff)
downloadale-8a374a69a3b4059807ab6e63c2d6a70c99db06bc.zip
Fix #922 - Prefer nearer ESLint configuration files with lower precedence filenames for eslint --fix
-rw-r--r--autoload/ale/fixers/eslint.vim26
-rw-r--r--test/eslint-test-files/react-app/subdir-with-config/.eslintrc0
-rw-r--r--test/fixers/test_eslint_fixer_callback.vader14
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(''))