summaryrefslogtreecommitdiff
path: root/test/test_eslint_executable_detection.vader
diff options
context:
space:
mode:
authorKevin Locke <kevin@kevinlocke.name>2020-07-08 13:42:01 +0000
committerGitHub <noreply@github.com>2020-07-08 14:42:01 +0100
commit106c27644b4ff7543d600ae54ab9c53bec909828 (patch)
tree9051aa409edf4ef7361b3af992ef98c49a2b8be1 /test/test_eslint_executable_detection.vader
parentfd399c527f1812825bfd63c63255c648aa7ceef4 (diff)
downloadale-106c27644b4ff7543d600ae54ab9c53bec909828.zip
eslint: Use cwd from executable location to fix nested projects (#3222)
* Split FindNearestExecutable from FindExecutable The path searching in ale#node#FindExecutable() will be useful for eslint. Refactor it into a separate function so it can be used without regard for the state of the _use_global and _executable variables. Signed-off-by: Kevin Locke <kevin@kevinlocke.name> * eslint: Set project root from local executable Using the nearest directory with node_modules does not work correctly for nested projects where the eslint dependencies are in the outer project. For example: https://github.com/dense-analysis/ale/issues/3143#issuecomment-652452362 Adopt the behavior of SublimeLinter, which runs from project_root determined by the presence of the eslint executable in node_modules/.bin (or eslint in dependencies/devDependencies of package.json, which we can add later as necessary). See [NodeLinter#find_local_executable]. [NodeLinter#find_local_executable]: https://github.com/SublimeLinter/SublimeLinter/blob/056e6f6/lint/base_linter/node_linter.py#L109 Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Diffstat (limited to 'test/test_eslint_executable_detection.vader')
-rw-r--r--test/test_eslint_executable_detection.vader19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/test_eslint_executable_detection.vader b/test/test_eslint_executable_detection.vader
index c2071131..3fed63da 100644
--- a/test/test_eslint_executable_detection.vader
+++ b/test/test_eslint_executable_detection.vader
@@ -70,6 +70,25 @@ Execute(eslint.js executables should be run with node on Windows):
\ ale#handlers#eslint#GetCommand(bufnr(''))
endif
+Execute(eslint.js should be run from containing project with eslint):
+ call ale#test#SetFilename('eslint-test-files/react-app/subdir-with-package-json/testfile.js')
+
+ " We have to execute the file with node.
+ if has('win32')
+ AssertEqual
+ \ ale#path#CdString(ale#path#Simplify(g:dir . '/eslint-test-files/react-app'))
+ \ . ale#Escape('node.exe') . ' '
+ \ . ale#Escape(ale#path#Simplify(g:dir . '/eslint-test-files/react-app/node_modules/eslint/bin/eslint.js'))
+ \ . ' -f json --stdin --stdin-filename %s',
+ \ ale#handlers#eslint#GetCommand(bufnr(''))
+ else
+ AssertEqual
+ \ ale#path#CdString(ale#path#Simplify(g:dir . '/eslint-test-files/react-app'))
+ \ . ale#Escape(ale#path#Simplify(g:dir . '/eslint-test-files/react-app/node_modules/eslint/bin/eslint.js'))
+ \ . ' -f json --stdin --stdin-filename %s',
+ \ ale#handlers#eslint#GetCommand(bufnr(''))
+ endif
+
Execute(eslint.js executables can be run outside project dir):
" Set filename above eslint-test-files (which contains node_modules)
call ale#test#SetFilename('testfile.js')