********************************************************************** 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', '(EmojiMapping)'] } call plug#end() PlugInstall | q Assert exists(':EmojiCommand'), 'EmojiCommand not defined' Assert exists(':EmojiCommand2'), 'EmojiCommand2 not defined' Assert !empty(mapcheck('(EmojiMapping)')), '(EmojiMapping) not defined' silent! EmojiCommand Assert !exists(':EmojiCommand'), 'EmojiCommand defined' Assert !exists(':EmojiCommand2'), 'EmojiCommand2 defined' Assert empty(mapcheck('(EmojiMapping)')), '(EmojiMapping) defined' " Cleared on FileType call plug#begin('$TMPDIR/plugged') Plug 'junegunn/vim-emoji', { 'on': ['EmojiCommandExtra', '(EmojiMappingExtra)'], 'for': ['emoji'] } call plug#end() Assert exists(':EmojiCommandExtra'), 'EmojiCommandExtra not defined' Assert !empty(mapcheck('(EmojiMappingExtra)')), '(EmojiMappingExtra) not defined' setf emoji Assert !exists(':EmojiCommandExtra'), 'EmojiCommandExtra defined' Assert empty(mapcheck('(EmojiMappingExtra)')), '(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'), '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'), '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