diff --git a/autoload/ale/fixers/eslint.vim b/autoload/ale/fixers/eslint.vim index 9c985622..c89f4dc4 100644 --- a/autoload/ale/fixers/eslint.vim +++ b/autoload/ale/fixers/eslint.vim @@ -9,7 +9,6 @@ function! s:FindConfig(buffer) abort \ '.eslintrc.yml', \ '.eslintrc.json', \ '.eslintrc', - \ 'package.json', \] let l:config = ale#path#Simplify(l:path . '/' . l:basename) @@ -19,7 +18,7 @@ function! s:FindConfig(buffer) abort endfor endfor - return '' + return ale#path#FindNearestFile(a:buffer, 'package.json') endfunction function! ale#fixers#eslint#Fix(buffer) abort diff --git a/test/eslint-test-files/package.json b/test/eslint-test-files/package.json new file mode 100644 index 00000000..e69de29b diff --git a/test/eslint-test-files/react-app/subdir-with-package-json/package.json b/test/eslint-test-files/react-app/subdir-with-package-json/package.json 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 035f67e3..e6f79abe 100644 --- a/test/fixers/test_eslint_fixer_callback.vader +++ b/test/fixers/test_eslint_fixer_callback.vader @@ -17,7 +17,7 @@ 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') @@ -30,3 +30,28 @@ Execute(The lower priority configuration file in a nested directory should be pr \ . ' --fix %t', \ }, \ ale#fixers#eslint#Fix(bufnr('')) + +Execute(package.json should be used as a last resort): + call ale#test#SetFilename('../eslint-test-files/react-app/subdir-with-package-json/testfile.js') + + AssertEqual + \ { + \ 'read_temporary_file': 1, + \ '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/.eslintrc.js')) + \ . ' --fix %t', + \ }, + \ ale#fixers#eslint#Fix(bufnr('')) + + call ale#test#SetFilename('../eslint-test-files/package.json') + + AssertEqual + \ { + \ 'read_temporary_file': 1, + \ 'command': + \ ale#Escape(simplify(g:dir . '/../eslint-test-files/node_modules/.bin/eslint')) + \ . ' --config ' . ale#Escape(simplify(g:dir . '/../eslint-test-files/package.json')) + \ . ' --fix %t', + \ }, + \ ale#fixers#eslint#Fix(bufnr(''))