forked from aniani/vim
Problem: tests: plugin tests are named inconsistently Solution: group them under a common 'plugin' prefix related: #16599 Signed-off-by: Christian Brabandt <cb@256bit.org>
379 lines
9.7 KiB
VimL
379 lines
9.7 KiB
VimL
" Tests for GetLatestVimScripts plugin
|
|
|
|
" vim feature
|
|
set nocp
|
|
set cpo&vim
|
|
|
|
" constants
|
|
const s:dotvim= has("win32") ? "vimfiles" : ".vim"
|
|
const s:scriptdir = $"{$HOME}/{s:dotvim}/GetLatest"
|
|
const s:vimdir = expand("<script>:h:h:h")
|
|
const s:packages = {
|
|
\ 'vmb': {
|
|
\ 'spec': '4979 1 :AutoInstall: AnsiEsc.vim',
|
|
\ 'files': ['plugin/AnsiEscPlugin.vim', 'autoload/AnsiEsc.vim']
|
|
\ },
|
|
\ 'vim.bz2': {
|
|
\ 'spec': '514 1 :AutoInstall: mrswin.vim',
|
|
\ 'files': ['plugin/mrswin.vim']
|
|
\ },
|
|
\ 'vba.gz': {
|
|
\ 'spec': '120 1 :AutoInstall: Decho.vim',
|
|
\ 'package': 'GetLatest/Installed/Decho.vba',
|
|
\ 'files': ['plugin/Decho.vim', 'syntax/Decho.vim']
|
|
\ },
|
|
\ 'tar.xz': {
|
|
\ 'spec': '5632 1 :AutoInstall: dumpx',
|
|
\ 'package': 'GetLatest/Installed/dumpx.tar',
|
|
\ 'files': ['dumpx/plugin/dumpx.vim', 'dumpx/doc/dumpx.txt']
|
|
\ }
|
|
\ }
|
|
|
|
" Before each test recreate the .vim dir structure expected by GLVS and load the plugin
|
|
func SetUp()
|
|
|
|
" add the required GetLatest dir (note $HOME is a dummy)
|
|
call mkdir(s:scriptdir, "p")
|
|
let &runtimepath = $"{$HOME}/{s:dotvim},{s:vimdir}/runtime"
|
|
|
|
" add plugin dir
|
|
call mkdir($"{$HOME}/{s:dotvim}/plugin")
|
|
|
|
" doc file is required for the packages which use :helptags
|
|
let docdir = $"{$HOME}/{s:dotvim}/doc"
|
|
call mkdir(docdir, "p")
|
|
exe $"split {docdir}/tags"
|
|
w!
|
|
bwipe!
|
|
|
|
" load required plugins, getscript.vim would be loaded manually by the test
|
|
" (instead of relying on autoload) because set up depends on shell selection
|
|
runtime plugin/vimballPlugin.vim
|
|
runtime plugin/getscriptPlugin.vim
|
|
endfunc
|
|
|
|
func CheckTool(tool)
|
|
" define tools location
|
|
if has('win32')
|
|
if executable('git')
|
|
let git_path = trim(system('powershell -Command "Split-Path (Split-Path (gcm git).Source)"'))
|
|
endif
|
|
|
|
if a:tool == 'bunzip2'
|
|
if executable('bunzip2')
|
|
let g:GetLatestVimScripts_bunzip2= "bunzip2"
|
|
elseif executable('7z')
|
|
let g:GetLatestVimScripts_bunzip2= "7z x"
|
|
elseif exists('git_path')
|
|
let g:GetLatestVimScripts_bunzip2= $'{git_path}\usr\bin\bunzip2'
|
|
else
|
|
throw "Skipped: Missing tool to decompress .bz2 files"
|
|
endif
|
|
endif
|
|
|
|
if a:tool == 'gunzip'
|
|
if executable('gunzip')
|
|
let g:GetLatestVimScripts_gunzip= "gunzip"
|
|
elseif executable('7z')
|
|
let g:GetLatestVimScripts_gunzip="7z e"
|
|
elseif exists('git_path')
|
|
let g:GetLatestVimScripts_gunzip= $'{git_path}\usr\bin\gunzip'
|
|
else
|
|
throw "Skipped: Missing tool to decompress .gz files"
|
|
endif
|
|
endif
|
|
|
|
if a:tool == 'unxz'
|
|
if executable('unxz')
|
|
let g:GetLatestVimScripts_unxz= "unxz"
|
|
elseif executable('7z')
|
|
let g:GetLatestVimScripts_unxz="7z x"
|
|
elseif exists('git_path')
|
|
let g:GetLatestVimScripts_unxz= $'{git_path}\mingw64\bin\unxz'
|
|
else
|
|
throw "Skipped: Missing tool to decompress .xz files"
|
|
endif
|
|
endif
|
|
else
|
|
" Mac or Unix
|
|
if a:tool == 'bunzip2'
|
|
if executable('bunzip2')
|
|
let g:GetLatestVimScripts_bunzip2= "bunzip2"
|
|
else
|
|
throw "Skipped: Missing tool to decompress .bz2 files"
|
|
endif
|
|
endif
|
|
|
|
if a:tool == 'gunzip'
|
|
if executable('gunzip')
|
|
let g:GetLatestVimScripts_gunzip= "gunzip"
|
|
else
|
|
throw "Skipped: Missing tool to decompress .bz2 files"
|
|
endif
|
|
endif
|
|
|
|
if a:tool == 'unxz'
|
|
if executable('unxz')
|
|
let g:GetLatestVimScripts_unxz= "unxz"
|
|
else
|
|
throw "Skipped: Missing tool to decompress .xz files"
|
|
endif
|
|
endif
|
|
endif
|
|
endfunc
|
|
|
|
" After each test remove the contents of the .vim dir and reset the script
|
|
func TearDown()
|
|
call delete($"{$HOME}/{s:dotvim}", "rf")
|
|
|
|
" getscript.vim include guard
|
|
unlet! g:loaded_getscript g:loaded_getscriptPlugin
|
|
" remove all globals (shell dependents)
|
|
let script_globals = keys(g:)
|
|
call filter(script_globals, 'v:val =~ "GetLatestVimScripts_"')
|
|
if len(script_globals)
|
|
call map(script_globals, '"g:" . v:val')
|
|
exe "unlet " . script_globals->join()
|
|
endif
|
|
endfunc
|
|
|
|
" Ancillary functions
|
|
|
|
func SetShell(shell)
|
|
" select different shells
|
|
if a:shell == "default"
|
|
set shell& shellcmdflag& shellxquote& shellpipe& shellredir&
|
|
elseif a:shell == "powershell" " help dos-powershell
|
|
" powershell desktop is windows only
|
|
if !has("win32")
|
|
throw 'Skipped: powershell desktop is missing'
|
|
endif
|
|
set shell=powershell shellcmdflag=-NoProfile\ -Command shellxquote=\"
|
|
set shellpipe=2>&1\ \|\ Out-File\ -Encoding\ default shellredir=2>&1\ \|\ Out-File\ -Encoding\ default
|
|
elseif a:shell == "pwsh" " help dos-powershell
|
|
" powershell core works crossplatform
|
|
if !executable("pwsh")
|
|
throw 'Skipped: powershell core is missing'
|
|
endif
|
|
set shell=pwsh shellcmdflag=-NoProfile\ -c shellpipe=>%s\ 2>&1 shellredir=>%s\ 2>&1
|
|
if has("win32")
|
|
set shellxquote=\"
|
|
else
|
|
set shellxquote=
|
|
endif
|
|
else
|
|
call assert_report("Trying to select and unknown shell")
|
|
endif
|
|
|
|
" reload script to force new shell options
|
|
runtime autoload/getscript.vim
|
|
endfunc
|
|
|
|
func SelectScript(package)
|
|
" add the corresponding file
|
|
exe $"split {s:scriptdir}/GetLatestVimScripts.dat"
|
|
let scripts =<< trim END
|
|
ScriptID SourceID Filename
|
|
--------------------------
|
|
END
|
|
call setline(1, scripts)
|
|
call append(line('$'), s:packages[a:package]['spec'])
|
|
w!
|
|
bwipe!
|
|
endfunc
|
|
|
|
func ValidateInstall(package)
|
|
" check the package is expected
|
|
call assert_true(s:packages->has_key(a:package), "This package is unexpected")
|
|
|
|
" check if installation work out
|
|
if s:packages[a:package]->has_key('package')
|
|
let check = filereadable($"{$HOME}/{s:dotvim}/".s:packages[a:package]['package'])
|
|
call assert_true(check, "The plugin was not downloaded")
|
|
endif
|
|
|
|
call assert_true(s:packages[a:package]->has_key('files'), "This package lacks validation files")
|
|
for file in s:packages[a:package]['files']
|
|
let check = filereadable($"{$HOME}/{s:dotvim}/".file)
|
|
call assert_true(check, "The plugin was not installed")
|
|
endfor
|
|
endfunc
|
|
|
|
" Tests
|
|
"
|
|
func Test_glvs_default_vmb()
|
|
" select different shells
|
|
call SetShell('default')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('vmb')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('vmb')
|
|
endfunc
|
|
|
|
func Test_glvs_pwsh_vmb()
|
|
" select different shells
|
|
call SetShell('pwsh')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('vmb')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('vmb')
|
|
endfunc
|
|
|
|
func Test_glvs_powershell_vmb()
|
|
" select different shells
|
|
call SetShell('powershell')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('vmb')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('vmb')
|
|
endfunc
|
|
|
|
func Test_glvs_default_vim_bz2()
|
|
call CheckTool('bunzip2')
|
|
|
|
" select different shells
|
|
call SetShell('default')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('vim.bz2')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('vim.bz2')
|
|
endfunc
|
|
|
|
func Test_glvs_powershell_vim_bz2()
|
|
call CheckTool('bunzip2')
|
|
|
|
" select different shells
|
|
call SetShell('powershell')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('vim.bz2')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('vim.bz2')
|
|
endfunc
|
|
|
|
func Test_glvs_pwsh_vim_bz2()
|
|
call CheckTool('bunzip2')
|
|
|
|
" select different shells
|
|
call SetShell('pwsh')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('vim.bz2')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('vim.bz2')
|
|
endfunc
|
|
|
|
func Test_glvs_default_vba_gz()
|
|
call CheckTool('gunzip')
|
|
|
|
" select different shells
|
|
call SetShell('default')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('vba.gz')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('vba.gz')
|
|
endfunc
|
|
|
|
func Test_glvs_powershell_vba_gz()
|
|
call CheckTool('gunzip')
|
|
|
|
" select different shells
|
|
call SetShell('powershell')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('vba.gz')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('vba.gz')
|
|
endfunc
|
|
|
|
func Test_glvs_pwsh_vba_gz()
|
|
call CheckTool('gunzip')
|
|
|
|
" select different shells
|
|
call SetShell('pwsh')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('vba.gz')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('vba.gz')
|
|
endfunc
|
|
|
|
func Test_glvs_default_tar_xz()
|
|
call CheckTool('unxz')
|
|
|
|
" select different shells
|
|
call SetShell('default')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('tar.xz')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('tar.xz')
|
|
endfunc
|
|
|
|
func Test_glvs_powershell_tar_xz()
|
|
call CheckTool('unxz')
|
|
|
|
" select different shells
|
|
call SetShell('powershell')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('tar.xz')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('tar.xz')
|
|
endfunc
|
|
|
|
func Test_glvs_pwsh_tar_xz()
|
|
call CheckTool('unxz')
|
|
|
|
" select different shells
|
|
call SetShell('pwsh')
|
|
|
|
" add the corresponding script
|
|
call SelectScript('tar.xz')
|
|
|
|
" load the plugins specified
|
|
GLVS
|
|
|
|
call ValidateInstall('tar.xz')
|
|
endfunc
|
|
|
|
" vim: set sw=4 ts=4 et:
|