From 634bf73f52c9d533476058a9fe464b93eb90f3d8 Mon Sep 17 00:00:00 2001 From: w0rp Date: Thu, 9 Aug 2018 08:51:27 +0100 Subject: #1459 Always run ESLint in the directory of the file being checked --- ale_linters/javascript/eslint.vim | 2 ++ autoload/ale/handlers/eslint.vim | 17 +++++++++++------ .../test_javascript_eslint_command_callback.vader | 9 +++++++++ .../test_typescript_eslint_command_callback.vader | 9 +++++++++ test/test_eslint_executable_detection.vader | 3 ++- 5 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 test/command_callback/test_javascript_eslint_command_callback.vader create mode 100644 test/command_callback/test_typescript_eslint_command_callback.vader diff --git a/ale_linters/javascript/eslint.vim b/ale_linters/javascript/eslint.vim index 23e16949..5be2377b 100644 --- a/ale_linters/javascript/eslint.vim +++ b/ale_linters/javascript/eslint.vim @@ -1,6 +1,8 @@ " Author: w0rp " Description: eslint for JavaScript files +call ale#handlers#eslint#InitVariables() + call ale#linter#Define('javascript', { \ 'name': 'eslint', \ 'output_stream': 'both', diff --git a/autoload/ale/handlers/eslint.vim b/autoload/ale/handlers/eslint.vim index bc10ec21..9f4f9357 100644 --- a/autoload/ale/handlers/eslint.vim +++ b/autoload/ale/handlers/eslint.vim @@ -3,11 +3,15 @@ let s:sep = has('win32') ? '\' : '/' -call ale#Set('javascript_eslint_options', '') -call ale#Set('javascript_eslint_executable', 'eslint') -call ale#Set('javascript_eslint_use_global', get(g:, 'ale_use_global_executables', 0)) -call ale#Set('javascript_eslint_suppress_eslintignore', 0) -call ale#Set('javascript_eslint_suppress_missing_config', 0) +function! ale#handlers#eslint#InitVariables() abort + call ale#Set('javascript_eslint_options', '') + call ale#Set('javascript_eslint_executable', 'eslint') + call ale#Set('javascript_eslint_use_global', get(g:, 'ale_use_global_executables', 0)) + call ale#Set('javascript_eslint_suppress_eslintignore', 0) + call ale#Set('javascript_eslint_suppress_missing_config', 0) +endfunction + +call ale#handlers#eslint#InitVariables() function! ale#handlers#eslint#FindConfig(buffer) abort for l:path in ale#path#Upwards(expand('#' . a:buffer . ':p:h')) @@ -42,7 +46,8 @@ function! ale#handlers#eslint#GetCommand(buffer) abort let l:options = ale#Var(a:buffer, 'javascript_eslint_options') - return ale#node#Executable(a:buffer, l:executable) + return ale#path#BufferCdString(a:buffer) + \ . ale#node#Executable(a:buffer, l:executable) \ . (!empty(l:options) ? ' ' . l:options : '') \ . ' -f unix --stdin --stdin-filename %s' endfunction diff --git a/test/command_callback/test_javascript_eslint_command_callback.vader b/test/command_callback/test_javascript_eslint_command_callback.vader new file mode 100644 index 00000000..9ac8893e --- /dev/null +++ b/test/command_callback/test_javascript_eslint_command_callback.vader @@ -0,0 +1,9 @@ +Before: + call ale#assert#SetUpLinterTest('javascript', 'eslint') + +After: + call ale#assert#TearDownLinterTest() + +Execute(The default command should be correct): + AssertLinter 'eslint', 'cd ' . ale#Escape(g:dir) . ' && ' + \ . ale#Escape('eslint') . ' -f unix --stdin --stdin-filename %s' diff --git a/test/command_callback/test_typescript_eslint_command_callback.vader b/test/command_callback/test_typescript_eslint_command_callback.vader new file mode 100644 index 00000000..7a52a75b --- /dev/null +++ b/test/command_callback/test_typescript_eslint_command_callback.vader @@ -0,0 +1,9 @@ +Before: + call ale#assert#SetUpLinterTest('typescript', 'eslint') + +After: + call ale#assert#TearDownLinterTest() + +Execute(The default command should be correct): + AssertLinter 'eslint', 'cd ' . ale#Escape(g:dir) . ' && ' + \ . ale#Escape('eslint') . ' -f unix --stdin --stdin-filename %s' diff --git a/test/test_eslint_executable_detection.vader b/test/test_eslint_executable_detection.vader index c1438ed8..7b0329ea 100644 --- a/test/test_eslint_executable_detection.vader +++ b/test/test_eslint_executable_detection.vader @@ -58,7 +58,8 @@ Execute(eslint.js executables should be run with node on Windows): " We have to execute the file with node. AssertEqual - \ ale#Escape('node.exe') . ' ' + \ 'cd ' . ale#Escape(ale#path#Simplify(g:dir . '/eslint-test-files/react-app/subdir')) . ' && ' + \ . ale#Escape('node.exe') . ' ' \ . ale#Escape(ale#path#Simplify(g:dir . '/eslint-test-files/react-app/node_modules/eslint/bin/eslint.js')) \ . ' -f unix --stdin --stdin-filename %s', \ ale#handlers#eslint#GetCommand(bufnr('')) -- cgit v1.2.3