test.vader 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. Execute (Initialize test environment):
  2. Save &rtp, g:plugs, g:plug_home, g:plug_window
  3. unlet! g:plugs g:plug_home g:plug_window
  4. let g:plug_url_format = 'file:///tmp/vim-plug-test/%s'
  5. let g:base_rtp = &rtp
  6. let g:first_rtp = split(&rtp, ',')[0]
  7. let g:last_rtp = split(&rtp, ',')[-1]
  8. let g:temp_plugged = tempname()
  9. if !exists('$PLUG_SRC')
  10. let $PLUG_SRC = globpath(&rtp, 'autoload/plug.vim')
  11. endif
  12. let $PLUG_TMP = fnamemodify(tempname(), ':h').'/plug.vim'
  13. " Temporarily patch plug.vim
  14. call system('cp "$PLUG_SRC" "$PLUG_TMP"')
  15. let patch =
  16. \ ['function! ResetPlug()', 'let s:loaded = {}', 'endfunction',
  17. \ 'function! CompareURI(a, b)', 'return s:compare_git_uri(a:a, a:b)', 'endfunction']
  18. if $ENV != 'vim8'
  19. call add(patch, 'let s:vim8 = 0')
  20. endif
  21. call writefile(extend(readfile($PLUG_TMP), patch), $PLUG_TMP)
  22. set t_Co=256
  23. colo default
  24. pclose
  25. function! PlugStatusSorted()
  26. PlugStatus
  27. %y
  28. q
  29. normal! P
  30. %sort
  31. g/^$/d
  32. endfunction
  33. function! AssertExpect(bang, pat, cnt)
  34. let op = a:bang ? '==#' : '=~#'
  35. AssertEqual a:cnt, len(filter(getline(1, '$'), "v:val ".op." '".a:pat."'"))
  36. endfunction
  37. command! -nargs=+ -bang AssertExpect call AssertExpect('<bang>' == '!', <args>)
  38. function! EnsureLoaded()
  39. if has('vim_starting')
  40. runtime! plugin/**/*.vim
  41. endif
  42. endfunction
  43. function! RmRf(file)
  44. call system(printf('rm -rf "%s"', a:file))
  45. endfunction
  46. function! ReloadPlug()
  47. call ResetPlug()
  48. source $PLUG_TMP
  49. let &rtp = g:base_rtp
  50. endfunction
  51. function! GitBranch(repo)
  52. return system(printf('cd %s && git rev-parse --abbrev-ref HEAD', g:plugs[a:repo].dir))[:-2]
  53. endfunction
  54. function! GitTag(repo)
  55. return system(printf('cd %s && git describe --tags', g:plugs[a:repo].dir))[:-2]
  56. endfunction
  57. function! GitCommit(repo)
  58. return system(printf('cd %s && git rev-parse HEAD', g:plugs[a:repo].dir))[:-2]
  59. endfunction
  60. source $PLUG_TMP
  61. Execute (Print Interpreter Version):
  62. redir => out
  63. if has('ruby')
  64. silent! ruby puts 'Ruby: ' + RUBY_VERSION
  65. endif
  66. if has('python')
  67. silent! python import sys; svi = sys.version_info; print 'Python: {}.{}.{}'.format(svi[0], svi[1], svi[2])
  68. endif
  69. if has('python3')
  70. silent! python3 import sys; svi = sys.version_info; print('Python: {}.{}.{}'.format(svi[0], svi[1], svi[2]))
  71. endif
  72. redir END
  73. Log split(out, '\n')
  74. Include: workflow.vader
  75. Include: regressions.vader
  76. Execute (Cleanup):
  77. silent! call RmRf(g:temp_plugged)
  78. silent! unlet g:plugs g:plug_home g:plug_url_format
  79. silent! unlet g:temp_plugged g:first_rtp g:last_rtp g:base_rtp out
  80. silent! delf PlugStatusSorted
  81. silent! delf AssertExpect
  82. silent! delf PlugUpdated
  83. silent! delf EnsureLoaded
  84. silent! delf ReloadPlug
  85. silent! delc AssertExpect
  86. silent! unmap /
  87. silent! unmap ?
  88. call delete($PLUG_TMP)
  89. Restore