95aa96a884
The older documentation of vim-plug suggested that the second string parameter to Plug command was for both branches and tags. But we've realized that tags and branches are not interchangeable (#174), and it is now recommended that the user explicitly specify whether it's a branch or a tag. The now-undocumented second parameter is currently for branches, but I'd like to change it for tags, as the use of tags are much more common.
228 lines
6.8 KiB
Text
228 lines
6.8 KiB
Text
**********************************************************************
|
|
Execute (#112 On-demand loading should not suppress messages from ftplugin):
|
|
call plug#begin('$PLUG_FIXTURES')
|
|
Plug '$PLUG_FIXTURES/ftplugin-msg', { 'for': 'c' }
|
|
call plug#end()
|
|
|
|
redir => out
|
|
tabnew a.c
|
|
redir END
|
|
Assert stridx(out, 'ftplugin') >= 0
|
|
|
|
* The same applies to plug#load())
|
|
redir => out
|
|
call plug#load('ftplugin-msg')
|
|
redir END
|
|
Assert stridx(out, 'ftplugin') >= 0
|
|
q
|
|
|
|
|
|
**********************************************************************
|
|
Execute (#114 Should not contain empty path in &rtp):
|
|
call plug#begin('$TMPDIR/plugged')
|
|
call plug#end()
|
|
|
|
Log &rtp
|
|
Assert &rtp !~ ',,', 'Commas'
|
|
Assert &rtp !~ '^,', 'Comma prefix'
|
|
Assert &rtp !~ ',$', 'Comma suffix'
|
|
|
|
**********************************************************************
|
|
Execute (#130 Proper cleanup of on-demand loading triggers):
|
|
augroup PlugLOD
|
|
autocmd!
|
|
augroup END
|
|
|
|
" Cleared on command
|
|
call plug#begin('$TMPDIR/plugged')
|
|
Plug 'junegunn/vim-emoji', { 'on': ['EmojiCommand', 'EmojiCommand2', '<Plug>(EmojiMapping)'] }
|
|
call plug#end()
|
|
PlugInstall | q
|
|
|
|
Assert exists(':EmojiCommand'), 'EmojiCommand not defined'
|
|
Assert exists(':EmojiCommand2'), 'EmojiCommand2 not defined'
|
|
Assert !empty(mapcheck('<Plug>(EmojiMapping)')), '<Plug>(EmojiMapping) not defined'
|
|
|
|
silent! EmojiCommand
|
|
|
|
Assert !exists(':EmojiCommand'), 'EmojiCommand defined'
|
|
Assert !exists(':EmojiCommand2'), 'EmojiCommand2 defined'
|
|
Assert empty(mapcheck('<Plug>(EmojiMapping)')), '<Plug>(EmojiMapping) defined'
|
|
|
|
" Cleared on FileType
|
|
call plug#begin('$TMPDIR/plugged')
|
|
Plug 'junegunn/vim-emoji', { 'on': ['EmojiCommandExtra', '<Plug>(EmojiMappingExtra)'], 'for': ['emoji'] }
|
|
call plug#end()
|
|
|
|
Assert exists(':EmojiCommandExtra'), 'EmojiCommandExtra not defined'
|
|
Assert !empty(mapcheck('<Plug>(EmojiMappingExtra)')), '<Plug>(EmojiMappingExtra) not defined'
|
|
|
|
setf emoji
|
|
|
|
Assert !exists(':EmojiCommandExtra'), 'EmojiCommandExtra defined'
|
|
Assert empty(mapcheck('<Plug>(EmojiMappingExtra)')), '<Plug>(EmojiMappingExtra) defined'
|
|
|
|
**********************************************************************
|
|
Execute (#131 Syntax error):
|
|
call plug#begin('/no-permission')
|
|
Plug 'junegunn/vim-emoji'
|
|
call plug#end()
|
|
|
|
redir => out
|
|
silent PlugInstall
|
|
redir END
|
|
Assert out =~ 'Invalid plug directory: /no-permission'
|
|
|
|
**********************************************************************
|
|
Execute (#139-1 Using new remote branch):
|
|
" Make sure to remove the clone
|
|
call plug#begin('$TMPDIR/plugged')
|
|
call plug#end()
|
|
PlugClean!
|
|
|
|
" Install master branch
|
|
call plug#begin('$TMPDIR/plugged')
|
|
Plug expand('file:///$TMPDIR/new-branch')
|
|
call plug#end()
|
|
PlugUpdate
|
|
|
|
unlet! g:foo g:bar g:baz
|
|
call plug#load('new-branch')
|
|
Assert exists('g:foo'), 'g:foo should be found'
|
|
Assert !exists('g:bar'), 'g:bar should not be found'
|
|
Assert !exists('g:baz'), 'g:baz should not be found'
|
|
|
|
" Create a new branch on origin
|
|
call system('cd $TMPDIR/new-branch && git checkout -b new &&'
|
|
\. 'echo "let g:bar = 1" > plugin/bar.vim && git add plugin/bar.vim &&'
|
|
\. 'git commit -m second')
|
|
|
|
" We're setting up two plugins so that parallel installer is used
|
|
call plug#begin('$TMPDIR/plugged')
|
|
Plug 'junegunn/seoul256.vim'
|
|
Plug expand('file:///$TMPDIR/new-branch'), { 'branch': 'new' }
|
|
call plug#end()
|
|
PlugUpdate
|
|
silent %y
|
|
Log @"
|
|
Assert @" !~? 'error', 'Should be able to use new remote branch: ' . @"
|
|
|
|
unlet! g:foo g:bar g:baz
|
|
call plug#load('new-branch')
|
|
Assert exists('g:foo'), 'g:foo should be found'
|
|
Assert exists('g:bar'), 'g:bar should be found'
|
|
Assert !exists('g:baz'), 'g:baz should not be found'
|
|
|
|
call PlugStatusSorted()
|
|
|
|
Expect:
|
|
- new-branch: OK
|
|
- seoul256.vim: OK
|
|
Finished. 0 error(s).
|
|
[==]
|
|
|
|
Execute (#139-2 Using yet another new remote branch):
|
|
" Create another branch on origin
|
|
call system('cd $TMPDIR/new-branch && git checkout master &&'
|
|
\. 'git checkout -b brand-new &&'
|
|
\. 'echo "let g:baz = 1" > plugin/baz.vim && git add plugin/baz.vim &&'
|
|
\. 'git commit -m third')
|
|
|
|
" Test Vim installer here
|
|
call plug#begin('$TMPDIR/plugged')
|
|
Plug expand('file:///$TMPDIR/new-branch'), { 'branch': 'brand-new' }
|
|
call plug#end()
|
|
PlugUpdate
|
|
silent %y
|
|
Log @"
|
|
Assert @" !~? 'error', 'Should be able to use new remote branch: ' . @"
|
|
|
|
unlet! g:foo g:bar g:baz
|
|
call plug#load('new-branch')
|
|
Assert exists('g:foo'), 'g:foo should be found'
|
|
Assert !exists('g:bar'), 'g:bar should not be found'
|
|
Assert exists('g:baz'), 'g:baz should be found'
|
|
|
|
call PlugStatusSorted()
|
|
|
|
Expect:
|
|
- new-branch: OK
|
|
Finished. 0 error(s).
|
|
[=]
|
|
|
|
Execute (#139-3 Should fail when not possible to fast-forward):
|
|
" Commit on cloned repo
|
|
call system('cd $TMPDIR/plugged/new-branch && git checkout master &&'
|
|
\. 'touch foobar && git add foobar && git commit -m foobar')
|
|
|
|
" Different commit on remote
|
|
call system('cd $TMPDIR/new-branch && git checkout master &&'
|
|
\. 'touch foobaz && git add foobaz && git commit -m foobaz')
|
|
|
|
for multi in [0, 1]
|
|
call plug#begin('$TMPDIR/plugged')
|
|
if multi
|
|
Plug 'junegunn/seoul256.vim'
|
|
endif
|
|
Plug expand('file:///$TMPDIR/new-branch')
|
|
call plug#end()
|
|
PlugUpdate
|
|
silent %y
|
|
Assert @" =~ 'Not possible to fast-forward', @"
|
|
endfor
|
|
|
|
**********************************************************************
|
|
Execute (#145: Merging on-demand loading triggers - cmd):
|
|
unlet! g:xxx g:yyy
|
|
call plug#begin()
|
|
Plug '$PLUG_FIXTURES/xxx', { 'on': 'XXX' }
|
|
Plug '$PLUG_FIXTURES/yyy', { 'on': ['XXX', 'YYY'] }
|
|
call plug#end()
|
|
|
|
silent! XXX
|
|
|
|
Assert exists('g:xxx'), 'xxx is not loaded'
|
|
Assert exists('g:yyy'), 'yyy is not loaded'
|
|
Assert !exists(':YYY')
|
|
|
|
Execute (#145: Merging on-demand loading triggers - map):
|
|
unlet! g:xxx g:yyy
|
|
|
|
call plug#begin()
|
|
Plug '$PLUG_FIXTURES/xxx', { 'on': '<Plug>(xxx)' }
|
|
Plug '$PLUG_FIXTURES/yyy', { 'on': ['<Plug>(xxx)' ,'<Plug>(yyy)' ] }
|
|
call plug#end()
|
|
|
|
Assert !empty(mapcheck("<Plug>(xxx)"))
|
|
Assert !empty(mapcheck("<Plug>(yyy)"))
|
|
|
|
# FIXME feedkeys() cannot be tested with Vader
|
|
call plug#load('xxx', 'yyy')
|
|
Assert empty(mapcheck("<Plug>(xxx)"))
|
|
Assert empty(mapcheck("<Plug>(yyy)"))
|
|
|
|
**********************************************************************
|
|
Execute (#159: shell=/bin/tcsh):
|
|
let org = &shell
|
|
try
|
|
set shell=/bin/tcsh
|
|
call plug#begin('$TMPDIR/plugged')
|
|
Plug 'junegunn/seoul256.vim'
|
|
call plug#end()
|
|
|
|
PlugStatus
|
|
Log getline(1, '$')
|
|
q
|
|
AssertEqual '/bin/tcsh', &shell
|
|
finally
|
|
let &shell = org
|
|
endtry
|
|
|
|
**********************************************************************
|
|
Execute (#154: Spaces in &rtp should not be escaped):
|
|
call plug#begin('$TMPDIR/plug it')
|
|
Plug 'seoul256 vim'
|
|
call plug#end()
|
|
Log &rtp
|
|
Assert stridx(&rtp, 'plug it/seoul256 vim') >= 0
|
|
|