summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/handlers/sh.vim2
-rw-r--r--test/test_shell_detection.vader18
2 files changed, 18 insertions, 2 deletions
diff --git a/autoload/ale/handlers/sh.vim b/autoload/ale/handlers/sh.vim
index e96dd3ce..75eaf71f 100644
--- a/autoload/ale/handlers/sh.vim
+++ b/autoload/ale/handlers/sh.vim
@@ -9,7 +9,7 @@ function! ale#handlers#sh#GetShellType(buffer) abort
" Remove options like -e, etc.
let l:command = substitute(l:bang_line, ' --\?[a-zA-Z0-9]\+', '', 'g')
- for l:possible_shell in ['bash', 'dash', 'ash', 'tcsh', 'csh', 'zsh', 'sh']
+ for l:possible_shell in ['bash', 'dash', 'ash', 'tcsh', 'csh', 'zsh', 'ksh', 'sh']
if l:command =~# l:possible_shell . '\s*$'
return l:possible_shell
endif
diff --git a/test/test_shell_detection.vader b/test/test_shell_detection.vader
index adb8d70d..88ee462d 100644
--- a/test/test_shell_detection.vader
+++ b/test/test_shell_detection.vader
@@ -52,11 +52,27 @@ Execute(zsh should be detected appropriately):
Given(A file with a csh hash bang and arguments):
#!/usr/bin/env csh -eu --foobar
-Execute(zsh should be detected appropriately):
+Execute(csh should be detected appropriately):
AssertEqual 'csh', ale#handlers#sh#GetShellType(bufnr(''))
AssertEqual 'csh', ale_linters#sh#shell#GetExecutable(bufnr(''))
AssertEqual 'csh', ale_linters#sh#shellcheck#GetDialectArgument(bufnr(''))
+Given(A file with a ksh hashbang):
+ #!/bin/ksh
+
+Execute(/bin/ksh should be detected appropriately):
+ AssertEqual 'ksh', ale#handlers#sh#GetShellType(bufnr(''))
+ AssertEqual 'ksh', ale_linters#sh#shell#GetExecutable(bufnr(''))
+ AssertEqual 'ksh', ale_linters#sh#shellcheck#GetDialectArgument(bufnr(''))
+
+Given(A file with a ksh as an argument to env):
+ #!/usr/bin/env ksh
+
+Execute(ksh should be detected appropriately):
+ AssertEqual 'ksh', ale#handlers#sh#GetShellType(bufnr(''))
+ AssertEqual 'ksh', ale_linters#sh#shell#GetExecutable(bufnr(''))
+ AssertEqual 'ksh', ale_linters#sh#shellcheck#GetDialectArgument(bufnr(''))
+
Given(A file with a sh hash bang and arguments):
#!/usr/bin/env sh -eu --foobar