Fix issues with running individual tests, and get the Vim tests to run on certain machines again
This commit is contained in:
parent
c67d3b7e60
commit
836a2cfe3b
7 changed files with 76 additions and 22 deletions
|
@ -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.
|
||||
"
|
||||
|
|
11
run-tests
11
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
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
Before:
|
||||
runtime ale_linters/javascript/jscs.vim
|
||||
|
||||
After:
|
||||
call ale#linter#Reset()
|
||||
|
||||
Execute(jscs should parse lines correctly):
|
||||
AssertEqual
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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')
|
||||
|
||||
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')
|
||||
|
||||
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')
|
||||
|
||||
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#FindNearestFile(bufnr('%'), 'cantfindthis')
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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'],
|
||||
|
|
Reference in a new issue