summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/test.vim28
-rwxr-xr-xrun-tests11
-rw-r--r--test/handler/test_jscs_handler.vader5
-rw-r--r--test/test_find_nearest_directory.vader16
-rw-r--r--test/test_nearest_file_search.vader16
-rw-r--r--test/test_resolve_local_path.vader16
-rw-r--r--test/test_sandbox_execution.vader6
7 files changed, 76 insertions, 22 deletions
diff --git a/autoload/ale/test.vim b/autoload/ale/test.vim
index bfc716de..22cd51b1 100644
--- a/autoload/ale/test.vim
+++ b/autoload/ale/test.vim
@@ -3,6 +3,34 @@
"
" This file should not typically be loaded during the normal execution of ALE.
+" Change the directory for checking things in particular test directories
+"
+" This function will set the g:dir variable, which represents the working
+" directory after changing the path. This variable allows a test to change
+" directories, and then switch back to a directory at the start of the test
+" run.
+"
+" This function should be run in a Vader Before: block.
+function! ale#test#SetDirectory(docker_path) abort
+ if a:docker_path[:len('/testplugin/') - 1] !=# '/testplugin/'
+ throw 'docker_path must start with /testplugin/!'
+ endif
+
+ " Try to switch directory, which will fail when running tests directly,
+ " and not through the Docker image.
+ silent! execute 'cd ' . fnameescape(a:docker_path)
+ let g:dir = getcwd()
+endfunction
+
+" When g:dir is defined, switch back to the directory we saved, and then
+" delete that variable.
+"
+" This function should be run in a Vader After: block.
+function! ale#test#RestoreDirectory() abort
+ silent execute 'cd ' . fnameescape(g:dir)
+ unlet! g:dir
+endfunction
+
" Change the filename for the current buffer using a relative path to
" the script without running autocmd commands.
"
diff --git a/run-tests b/run-tests
index 92dca319..b32ac703 100755
--- a/run-tests
+++ b/run-tests
@@ -45,6 +45,15 @@ while [ $# -ne 0 ]; do
run_neovim_tests=0
run_vint=0
run_custom_checks=0
+ shift
+ ;;
+ --no-vint)
+ run_vint=0
+ shift
+ ;;
+ --no-custom-checks)
+ run_custom_checks=0
+ shift
;;
--)
shift
@@ -161,7 +170,7 @@ if ((run_vim_tests)); then
echo
set -o pipefail
- docker run -a stderr "${DOCKER_FLAGS[@]}" \
+ docker run -a stderr -e VADER_OUTPUT_FILE=/dev/stderr "${DOCKER_FLAGS[@]}" \
"/vim-build/bin/$vim" -u test/vimrc \
"+Vader! $tests" 2>&1 | filter-vader-output | color-vader-output || EXIT=$?
set +o pipefail
diff --git a/test/handler/test_jscs_handler.vader b/test/handler/test_jscs_handler.vader
index 81e91d8e..6247307e 100644
--- a/test/handler/test_jscs_handler.vader
+++ b/test/handler/test_jscs_handler.vader
@@ -1,3 +1,8 @@
+Before:
+ runtime ale_linters/javascript/jscs.vim
+
+After:
+ call ale#linter#Reset()
Execute(jscs should parse lines correctly):
AssertEqual
diff --git a/test/test_find_nearest_directory.vader b/test/test_find_nearest_directory.vader
index ecfd1385..03d38862 100644
--- a/test/test_find_nearest_directory.vader
+++ b/test/test_find_nearest_directory.vader
@@ -1,15 +1,17 @@
-Execute(Open a file some directory down):
- silent! cd /testplugin/test
- :e! top/middle/bottom/dummy.txt
+Before:
+ call ale#test#SetDirectory('/testplugin/test')
+
+After:
+ call ale#test#RestoreDirectory()
+
+Execute(We should be able to find a directory some directory down):
+ call ale#test#SetFilename('top/middle/bottom/dummy.txt')
-Then(We should be able to find the right directory):
AssertEqual
\ expand('%:p:h:h:h:h') . '/top/ale-special-directory-name-dont-use-this-please/',
\ ale#path#FindNearestDirectory(bufnr('%'), 'ale-special-directory-name-dont-use-this-please')
-Execute(Do nothing):
-
-Then(We shouldn't find anything for files which don't match):
+Execute(We shouldn't find anything for files which don't match):
AssertEqual
\ '',
\ ale#path#FindNearestDirectory(bufnr('%'), 'ale-this-should-never-match-anything')
diff --git a/test/test_nearest_file_search.vader b/test/test_nearest_file_search.vader
index c2499ad2..71b7d109 100644
--- a/test/test_nearest_file_search.vader
+++ b/test/test_nearest_file_search.vader
@@ -1,11 +1,13 @@
-Execute(Open a file some directory down):
- silent! cd /testplugin/test
- :e! top/middle/bottom/dummy.txt
+Before:
+ call ale#test#SetDirectory('/testplugin/test')
-Then(We should be able to find a configuration file further up):
- AssertEqual expand('%:p:h:h:h:h') . '/top/example.ini', ale#path#FindNearestFile(bufnr('%'), 'example.ini')
+After:
+ call ale#test#RestoreDirectory()
+
+Execute(We should be able to find a configuration file further up):
+ call ale#test#SetFilename('top/middle/bottom/dummy.txt')
-Execute(Do nothing):
+ AssertEqual expand('%:p:h:h:h:h') . '/top/example.ini', ale#path#FindNearestFile(bufnr('%'), 'example.ini')
-Then(We shouldn't find anything for files which don't match):
+Execute(We shouldn't find anything for files which don't match):
AssertEqual '', ale#path#FindNearestFile(bufnr('%'), 'cantfindthis')
diff --git a/test/test_resolve_local_path.vader b/test/test_resolve_local_path.vader
index 703eec3d..ed1549a2 100644
--- a/test/test_resolve_local_path.vader
+++ b/test/test_resolve_local_path.vader
@@ -1,15 +1,17 @@
-Execute(Open a file some directory down):
- silent! cd /testplugin/test
- :e! top/middle/bottom/dummy.txt
+Before:
+ call ale#test#SetDirectory('/testplugin/test')
+
+After:
+ call ale#test#RestoreDirectory()
+
+Execute(We should be able to find the local version of a file):
+ call ale#test#SetFilename('top/middle/bottom/dummy.txt')
-Then(We should be able to find the local version of a file):
AssertEqual
\ expand('%:p:h:h:h:h') . '/top/example.ini',
\ ale#path#ResolveLocalPath(bufnr('%'), 'example.ini', '/global/config.ini')
-Execute(Do nothing):
-
-Then(We shouldn't find anything for files which don't match):
+Execute(We shouldn't find anything for files which don't match):
AssertEqual
\ '/global/config.ini',
\ ale#path#ResolveLocalPath(bufnr('%'), 'missing.ini', '/global/config.ini')
diff --git a/test/test_sandbox_execution.vader b/test/test_sandbox_execution.vader
index dc0cb01c..7f4941fd 100644
--- a/test/test_sandbox_execution.vader
+++ b/test/test_sandbox_execution.vader
@@ -47,6 +47,12 @@ Execute(ALE shouldn't blow up when run from a sandbox):
sandbox call ale#Lint()
Execute(ALE shouldn't blow up if file cleanup happens in a sandbox):
+ " Make a call to an engine function first, so the function will be defined
+ " before we make the sandbox call.
+ "
+ " You are not allowed to define any functions in the sandbox.
+ call ale#engine#InitBufferInfo(3)
+
let g:ale_buffer_info[3] = {
\ 'temporary_file_list': ['/tmp/foo'],
\ 'temporary_directory_list': ['/tmp/bar'],