1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-01-24 02:10:05 +08:00
SpaceVim/bundle/dein.vim/test/parse.vim
2022-01-01 22:47:56 +08:00

229 lines
6.7 KiB
VimL
Vendored

" set verbose=1
let s:suite = themis#suite('parse')
let s:assert = themis#helper('assert')
let s:path = tempname()
function! s:suite.before_each() abort
call dein#min#_init()
endfunction
function! s:suite.after_each() abort
endfunction
function! s:suite.parse_dict() abort
call dein#begin(s:path)
let plugin = {'name': 'baz'}
let parsed_plugin = dein#parse#_dict(dein#parse#_init('', plugin))
call s:assert.equals(parsed_plugin.name, 'baz')
let plugin = {'name': 'baz', 'if': '1'}
let parsed_plugin = dein#parse#_dict(dein#parse#_init('', plugin))
call s:assert.equals(parsed_plugin.merged, 0)
let plugin = {'name': 'baz', 'rev': 'foo'}
let parsed_plugin = dein#parse#_dict(dein#parse#_init('foo', plugin))
call s:assert.equals(parsed_plugin.path, '_foo')
let plugin = {'name': 'baz', 'rev': 'foo/bar'}
let parsed_plugin = dein#parse#_dict(dein#parse#_init('foo', plugin))
call s:assert.equals(parsed_plugin.path, '_foo_bar')
let $BAZDIR = '/baz'
let repo = '$BAZDIR/foo'
let plugin = {'repo': repo}
let parsed_plugin = dein#parse#_dict(dein#parse#_init(repo, plugin))
call s:assert.equals(parsed_plugin.repo, '/baz/foo')
call dein#end()
endfunction
function! s:suite.name_conversion() abort
let g:dein#enable_name_conversion = v:true
let plugin = dein#parse#_dict(
\ {'repo': 'https://github.com/Shougo/dein.vim.git'})
call s:assert.equals(plugin.name, 'dein')
let plugin = dein#parse#_dict(
\ {'repo': 'https://bitbucket.org/kh3phr3n/vim-qt-syntax.git'})
call s:assert.equals(plugin.name, 'qt-syntax')
let plugin = dein#parse#_dict(
\ {'repo': 'https://bitbucket.org/kh3phr3n/qt-syntax-vim.git'})
call s:assert.equals(plugin.name, 'qt-syntax')
let plugin = dein#parse#_dict(
\ {'repo': 'https://bitbucket.org/kh3phr3n/vim-qt-syntax.git',
\ 'name': 'vim-qt-syntax'})
call s:assert.equals(plugin.name, 'vim-qt-syntax')
let g:dein#enable_name_conversion = v:false
endfunction
function! s:suite.load_toml() abort
let toml = tempname()
call writefile([
\ '# TOML sample',
\ 'hook_add = "let g:foo = 0"',
\ '',
\ '[ftplugin]',
\ 'c = "let g:bar = 0"',
\ '',
\ '[[plugins]]',
\ '# repository name is required.',
\ "repo = 'Shougo/denite.nvim'",
\ "on_map = '<Plug>'",
\ '[[plugins]]',
\ "repo = 'Shougo/neosnippet.vim'",
\ "on_ft = 'snippet'",
\ "hook_add = '''",
\ '"echo',
\ '"comment',
\ "echo",
\ "'''",
\ "hook_source = '''",
\ "echo",
\ '\',
\ "echo",
\ "'''",
\ '[plugins.ftplugin]',
\ 'c = "let g:bar = 0"',
\ '[[multiple_plugins]]',
\ "plugins = ['foo', 'bar']",
\ "hook_add = 'foo'",
\ ], toml)
call dein#begin(s:path)
call s:assert.equals(g:dein#_hook_add, '')
call s:assert.equals(g:dein#_ftplugin, {})
call s:assert.equals(dein#load_toml(toml), 0)
call s:assert.equals(g:dein#_hook_add, "\nlet g:foo = 0")
call s:assert.equals(g:dein#_ftplugin,
\ {'c': "let g:bar = 0\nlet g:bar = 0"})
call s:assert.equals(g:dein#_multiple_plugins, [
\ {'plugins': ['foo', 'bar'], 'hook_add': 'foo'},
\ ])
call dein#end()
call s:assert.equals(dein#get('neosnippet.vim').hook_add,
\ "\"echo\n\"comment\necho\n")
call s:assert.equals(dein#get('neosnippet.vim').hook_source,
\ "echo\necho\n")
endfunction
function! s:suite.error_toml() abort
let toml = tempname()
call writefile([
\ '# TOML sample',
\ '[[plugins]]',
\ '# repository name is required.',
\ "on_map = '<Plug>'",
\ '[[plugins]]',
\ "on_ft = 'snippet'",
\ ], toml)
call dein#begin(s:path)
call s:assert.equals(dein#load_toml(toml), 1)
call dein#end()
endfunction
function! s:suite.load_dict() abort
call dein#begin(s:path)
call s:assert.equals(dein#load_dict({
\ 'Shougo/denite.nvim': {},
\ 'Shougo/deoplete.nvim': {'name': 'deoplete'}
\ }, {'lazy': 1}), 0)
call dein#end()
call s:assert.not_equals(dein#get('denite.nvim'), {})
call s:assert.equals(dein#get('deoplete').lazy, 1)
endfunction
function! s:suite.disable() abort
call dein#begin(s:path)
call dein#load_dict({
\ 'Shougo/denite.nvim': {'on_cmd': 'Unite'}
\ })
call s:assert.false(!exists(':Unite'))
call dein#disable('denite.nvim')
call s:assert.false(exists(':Unite'))
call dein#end()
call s:assert.equals(dein#get('denite.nvim'), {})
endfunction
function! s:suite.config() abort
call dein#begin(s:path)
call dein#load_dict({
\ 'Shougo/denite.nvim': {}
\ })
let g:dein#name = 'denite.nvim'
call dein#config({'on_event': ['InsertEnter']})
call dein#end()
call dein#config('unite', {'on_event': ['InsertEnter']})
call s:assert.equals(dein#get('denite.nvim').on_event, ['InsertEnter'])
endfunction
function! s:suite.skip_overwrite() abort
call dein#begin(s:path)
call dein#add('Shougo/denite.nvim', {'on_event': []})
call dein#add('Shougo/denite.nvim', {'on_event': ['InsertEnter']})
call dein#end()
call s:assert.equals(dein#get('denite.nvim').on_event, [])
endfunction
function! s:suite.overwrite() abort
call dein#begin(s:path)
call dein#add('Shougo/denite.nvim', {'on_event': []})
call dein#add('Shougo/denite.nvim', {'on_event': ['InsertEnter'], 'overwrite': 1})
call dein#end()
call s:assert.equals(dein#get('denite.nvim').on_event, ['InsertEnter'])
endfunction
function! s:suite.plugins2toml() abort
let parsed_plugin = dein#parse#_init('Shougo/denite.nvim', {})
let parsed_plugin2 = dein#parse#_init('Shougo/deoplete.nvim',
\ {'on_ft': ['vim'], 'hook_add': "hoge\npiyo"})
let parsed_plugin3 = dein#parse#_init('Shougo/deoppet.nvim',
\ {'on_map': {'n': ['a', 'b']}})
call s:assert.equals(dein#plugins2toml(
\ [parsed_plugin, parsed_plugin2, parsed_plugin3]), [
\ "[[plugins]]",
\ "repo = 'Shougo/denite.nvim'",
\ "",
\ "[[plugins]]",
\ "repo = 'Shougo/deoplete.nvim'",
\ "hook_add = '''",
\ "hoge",
\ "piyo",
\ "'''",
\ "on_ft = 'vim'",
\ "",
\ "[[plugins]]",
\ "repo = 'Shougo/deoppet.nvim'",
\ "on_map = {'n': ['a', 'b']}",
\ "",
\ ])
endfunction
function! s:suite.trusted() abort
let sudo = g:dein#_is_sudo
let g:dein#_is_sudo = 1
let parsed_plugin = dein#parse#_add(
\ 'Shougo/deoplete.nvim', {}, v:false)
call s:assert.equals(parsed_plugin.rtp, '')
let parsed_plugin = dein#parse#_add(
\ 'Shougo/denite.nvim', {'trusted': 1}, v:false)
call s:assert.not_equals(parsed_plugin.rtp, '')
let g:dein#_is_sudo = sudo
endfunction