summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2018-08-09 08:51:27 +0100
committerw0rp <devw0rp@gmail.com>2018-08-09 08:51:27 +0100
commit634bf73f52c9d533476058a9fe464b93eb90f3d8 (patch)
treec651bd8f4e758cef61afe0dcfc64ae67309d06d4
parentfc94fd4deb59c4dc6882aa73bd08c721d33facea (diff)
downloadale-634bf73f52c9d533476058a9fe464b93eb90f3d8.zip
#1459 Always run ESLint in the directory of the file being checked
-rw-r--r--ale_linters/javascript/eslint.vim2
-rw-r--r--autoload/ale/handlers/eslint.vim17
-rw-r--r--test/command_callback/test_javascript_eslint_command_callback.vader9
-rw-r--r--test/command_callback/test_typescript_eslint_command_callback.vader9
-rw-r--r--test/test_eslint_executable_detection.vader3
5 files changed, 33 insertions, 7 deletions
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 <devw0rp@gmail.com>
" 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(''))