Execute (Initialize test environment): Save &rtp, g:plugs, g:plug_home, g:plug_window unlet! g:plugs g:plug_home g:plug_window let g:plug_url_format = 'file:///tmp/vim-plug-test/%s' let g:base_rtp = &rtp let g:first_rtp = split(&rtp, ',')[0] let g:last_rtp = split(&rtp, ',')[-1] let g:temp_plugged = tempname() if !exists('$PLUG_SRC') let $PLUG_SRC = globpath(&rtp, 'autoload/plug.vim') endif let $PLUG_TMP = fnamemodify(tempname(), ':h').'/plug.vim' " Temporarily patch plug.vim call system('cp "$PLUG_SRC" "$PLUG_TMP"') let patch = \ ['function! ResetPlug()', 'let s:loaded = {}', 'endfunction', \ 'function! CompareURI(a, b)', 'return s:compare_git_uri(a:a, a:b)', 'endfunction'] call writefile(extend(readfile($PLUG_TMP), patch), $PLUG_TMP) set t_Co=256 colo default pclose function! PlugStatusSorted() PlugStatus %y q normal! P %sort g/^$/d endfunction function! AssertExpect(bang, pat, cnt, ...) let op = a:bang ? '==#' : '=~#' let args = [a:cnt, len(filter(getline(1, '$'), "v:val ".op." '".a:pat."'"))] + a:000 call call('vader#assert#equal', args) endfunction command! -nargs=+ -bang AssertExpect call AssertExpect('' == '!', ) function! EnsureLoaded() if has('vim_starting') runtime! plugin/**/*.vim endif endfunction function! RmRf(file) call system(printf('rm -rf "%s"', a:file)) endfunction function! ReloadPlug() call ResetPlug() source $PLUG_TMP let &rtp = g:base_rtp endfunction function! GitBranch(repo) return system(printf('cd %s && git rev-parse --abbrev-ref HEAD', g:plugs[a:repo].dir))[:-2] endfunction function! GitTag(repo) return system(printf('cd %s && git describe --tags', g:plugs[a:repo].dir))[:-2] endfunction function! GitCommit(repo) return system(printf('cd %s && git rev-parse HEAD', g:plugs[a:repo].dir))[:-2] endfunction source $PLUG_TMP Execute (Print Interpreter Version): redir => out if has('ruby') silent! ruby puts 'Ruby: ' + RUBY_VERSION endif if has('python') silent! python import sys; svi = sys.version_info; print 'Python: {}.{}.{}'.format(svi[0], svi[1], svi[2]) endif if has('python3') silent! python3 import sys; svi = sys.version_info; print('Python: {}.{}.{}'.format(svi[0], svi[1], svi[2])) endif redir END Log split(out, '\n') Include: workflow.vader Include: regressions.vader Include: functional.vader Execute (Cleanup): silent! call RmRf(g:temp_plugged) silent! unlet g:plugs g:plug_home g:plug_url_format silent! unlet g:temp_plugged g:first_rtp g:last_rtp g:base_rtp out silent! delf PlugStatusSorted silent! delf AssertExpect silent! delf PlugUpdated silent! delf EnsureLoaded silent! delf ReloadPlug silent! delc AssertExpect silent! unmap / silent! unmap ? call delete($PLUG_TMP) Restore