mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 03:23:51 -05:00
83 lines
1.6 KiB
Ruby
Executable File
83 lines
1.6 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
def run_script(src)
|
|
if system("bash", "-eo", "pipefail", "-c", src) != true
|
|
exit(1)
|
|
end
|
|
end
|
|
|
|
def run_vimscript(src)
|
|
wrapper = <<~EOF
|
|
vim --clean --not-a-term -u <(cat <<- "EOM"
|
|
set nocompatible
|
|
let &rtp='#{Dir.pwd},' . &rtp
|
|
set t_ti= t_te=
|
|
set shortmess+=F
|
|
set noswapfile
|
|
set nocp
|
|
set nomore
|
|
func! Log(msg)
|
|
if $DEV != '1'
|
|
echo a:msg
|
|
endif
|
|
endfunc
|
|
EOM
|
|
EOF
|
|
|
|
wrapper += <<~'EOF'
|
|
) -S <(cat <<- "EOM"
|
|
#{src}
|
|
|
|
redir @q
|
|
silent function /^NewTest_
|
|
redir END
|
|
let s:tests = split(substitute(@q, '\(function\|def\) \(\k*()\)', '\2', 'g'))
|
|
for test in s:tests
|
|
echo test
|
|
%bwipe!
|
|
exe 'call ' . test
|
|
set noinsertmode
|
|
if len(v:errors) > 0
|
|
for err in v:errors
|
|
echo err
|
|
endfor
|
|
cq!
|
|
endif
|
|
endfor
|
|
|
|
qa!
|
|
EOM
|
|
) | perl -pe 's/\e\[[0-9;]*[a-zA-Z]//g'
|
|
EOF
|
|
|
|
wrapper.gsub!('#{src}') { src }
|
|
|
|
run_script(wrapper)
|
|
end
|
|
|
|
test_helptags = <<~EOF
|
|
if ! expect -c 'set timeout 1' -c 'spawn vim -N --clean -c "set nomore | :helptags ./doc | q"' -c 'expect "ENTER" { exit 1 }' > /dev/null; then
|
|
echo "Please ensure ':helptags ./doc' works properly"
|
|
exit 1
|
|
fi
|
|
EOF
|
|
|
|
run_vimscript('source tests/filetypes.vim')
|
|
run_vimscript('source tests/extensions.vim')
|
|
|
|
if !ENV['DEV']
|
|
run_vimscript('source tests/native.vim')
|
|
end
|
|
|
|
run_script(test_helptags)
|
|
|
|
# run_vimscript("
|
|
# func! TestIndent(file)
|
|
# :e a:file
|
|
# echo 'ok'
|
|
# echo &filetype
|
|
# endfunc
|
|
#
|
|
# #{Dir['tests/indent/**/test.*'].map { |f| "call TestIndent(\"#{f}\")"}.join("\n")}
|
|
# ")
|