Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
183 lines
5.5 KiB
VimL
183 lines
5.5 KiB
VimL
let s:suite = themis#suite('tsort')
|
|
let s:assert = themis#helper('assert')
|
|
|
|
let g:path = expand('~/test-bundle/'.fnamemodify(expand('<sfile>'), ':t:r'))
|
|
|
|
function! s:comp_bundle(bundle1, bundle2) abort
|
|
return a:bundle1.name > a:bundle2.name
|
|
endfunction
|
|
|
|
function! s:rotate_bundle(bundles) abort
|
|
return a:bundles[1:-1]+a:bundles[0:0]
|
|
endfunction
|
|
|
|
function! s:suite.before_each() abort
|
|
endfunction
|
|
|
|
function! s:suite.after_each() abort
|
|
endfunction
|
|
|
|
function! s:suite.no_depends() abort
|
|
" [a, b, c] => [a, b, c]
|
|
let neobundle_test_data = [{'name' : 'a'}, {'name' : 'b'}, {'name' : 'c'},]
|
|
call s:assert.equals(neobundle#config#tsort(neobundle_test_data),
|
|
\ neobundle_test_data)
|
|
endfunction
|
|
|
|
function! s:suite.normal() abort
|
|
" a -> b -> c
|
|
" b -> d
|
|
" c
|
|
" [a, b, c] => [c, b, a]
|
|
let neobundle_test_data = [
|
|
\ {'name' : 'a', 'depends' : [
|
|
\ {'name' : 'b', 'depends' : [
|
|
\ {'name' : 'c'},
|
|
\ ]},
|
|
\ ]},
|
|
\ {'name' : 'b', 'skip' : 1, 'depends' : [
|
|
\ {'name' : 'd', 'skipped' : 1, },
|
|
\ ]},
|
|
\ {'name' : 'c', 'skip' : 1},
|
|
\ ]
|
|
call s:assert.equals(neobundle#config#tsort(neobundle_test_data), [
|
|
\ neobundle_test_data[0].depends[0].depends[0],
|
|
\ neobundle_test_data[0].depends[0],
|
|
\ neobundle_test_data[0],
|
|
\ ])
|
|
|
|
" a -> c -> b
|
|
" a -> d
|
|
" b
|
|
" c
|
|
" [a, b, c] => [b, c, d, a]
|
|
let neobundle_test_data = [
|
|
\ {'name' : 'a', 'depends' : [
|
|
\ {'name' : 'c', 'depends' : [
|
|
\ {'name' : 'b'},
|
|
\ ]},
|
|
\ {'name' : 'd'},
|
|
\ ]},
|
|
\ {'name' : 'b', 'skip' : 1},
|
|
\ {'name' : 'c', 'skip' : 1},
|
|
\ ]
|
|
call s:assert.equals(neobundle#config#tsort(neobundle_test_data),
|
|
\ [
|
|
\ neobundle_test_data[0].depends[0].depends[0],
|
|
\ neobundle_test_data[0].depends[0],
|
|
\ neobundle_test_data[0].depends[1],
|
|
\ neobundle_test_data[0],
|
|
\ ])
|
|
endfunction
|
|
|
|
function! s:suite.tsort_circular_reference() abort
|
|
" a -> b -> c -> a
|
|
" b
|
|
" c
|
|
" [a, b, c] => [c, b, a]
|
|
let neobundle_test_data = [
|
|
\ {'name' : 'a', 'depends' : [
|
|
\ {'name' : 'b', 'depends' : [
|
|
\ {'name' : 'c', 'depends' : [
|
|
\ {'name' : 'a', 'skip' : 1},
|
|
\ ]},
|
|
\ ]},
|
|
\ ]},
|
|
\ {'name' : 'b', 'skip' : 1},
|
|
\ {'name' : 'c', 'skip' : 1},
|
|
\ ]
|
|
call s:assert.equals(neobundle#config#tsort(neobundle_test_data),
|
|
\ [
|
|
\ neobundle_test_data[0].depends[0].depends[0],
|
|
\ neobundle_test_data[0].depends[0],
|
|
\ neobundle_test_data[0],
|
|
\ ])
|
|
endfunction
|
|
|
|
function! s:suite.bundled_no_depends() abort
|
|
call neobundle#begin(g:path)
|
|
NeoBundleLazy 'a/a'
|
|
NeoBundleLazy 'b/b'
|
|
NeoBundleLazy 'c/c'
|
|
call neobundle#end()
|
|
|
|
let neobundle_test_data = sort(filter(neobundle#config#get_neobundles(),
|
|
\ "v:val.name =~# '^[abc]$'"), "s:comp_bundle")
|
|
|
|
" [a, b, c] => [a, b, c]
|
|
call s:assert.equals(s:map(neobundle#config#tsort(neobundle_test_data)),
|
|
\ s:map(neobundle_test_data))
|
|
|
|
" [c, b, a] => [c, b, a]
|
|
call reverse(neobundle_test_data)
|
|
call s:assert.equals(s:map(neobundle#config#tsort(neobundle_test_data)),
|
|
\ s:map(neobundle_test_data))
|
|
endfunction
|
|
|
|
function! s:suite.bundled_normal() abort
|
|
call neobundle#begin(g:path)
|
|
NeoBundleLazy 'a/a'
|
|
NeoBundleLazy 'b/b', {'depends' : 'a/a'}
|
|
NeoBundleLazy 'c/c', {'depends' : 'b/b'}
|
|
call neobundle#end()
|
|
|
|
let neobundle_test_data = sort(filter(neobundle#config#get_neobundles(),
|
|
\ "v:val.name =~# '^[abc]$'"), "s:comp_bundle")
|
|
|
|
" [a, b, c] => [a, b, c]
|
|
call s:assert.equals(s:map(neobundle#config#tsort(neobundle_test_data)),
|
|
\ s:map(neobundle_test_data))
|
|
|
|
" [c, b, a] => [a, b, c]
|
|
call s:assert.equals(s:map(neobundle#config#tsort(
|
|
\ reverse(copy(neobundle_test_data)))), s:map(neobundle_test_data))
|
|
endfunction
|
|
|
|
function! s:suite.bundled_normal2() abort
|
|
call neobundle#begin(g:path)
|
|
NeoBundleLazy 'a/a', {'depends' : ['c/c', 'b/b']}
|
|
NeoBundleLazy 'b/b'
|
|
NeoBundleLazy 'c/c', {'depends' : 'b/b'}
|
|
call neobundle#end()
|
|
|
|
let neobundle_test_data = sort(filter(neobundle#config#get_neobundles(),
|
|
\ "v:val.name =~# '^[abc]$'"), "s:comp_bundle")
|
|
let neobundle_test_rotated = s:map(s:rotate_bundle(neobundle_test_data))
|
|
|
|
" [a, b, c] => [b, c, a]
|
|
call s:assert.equals(s:map(neobundle#config#tsort(
|
|
\ neobundle_test_data)),
|
|
\ neobundle_test_rotated)
|
|
|
|
" [c, b, a] => [b, c, a]
|
|
call s:assert.equals(s:map(neobundle#config#tsort(
|
|
\ reverse(copy(neobundle_test_data)))),
|
|
\ neobundle_test_rotated)
|
|
endfunction
|
|
|
|
function! s:suite.bundled_circular_reference() abort
|
|
call neobundle#begin(g:path)
|
|
NeoBundleLazy 'a/a', {'depends' : 'b/b'}
|
|
NeoBundleLazy 'b/b', {'depends' : 'c/c'}
|
|
NeoBundleLazy 'c/c', {'depends' : 'a/a'}
|
|
call neobundle#end()
|
|
|
|
let neobundle_test_data = sort(filter(neobundle#config#get_neobundles(),
|
|
\ "v:val.name =~# '^[abc]$'"), "s:comp_bundle")
|
|
|
|
" [a, b, c] => [c, b, a]
|
|
call s:assert.equals(s:map(neobundle#config#tsort(neobundle_test_data)),
|
|
\ s:map(reverse(copy(neobundle_test_data))))
|
|
|
|
" [c, b, a] => [b, a, c]
|
|
call reverse(neobundle_test_data)
|
|
let neobundle_test_rotated = s:rotate_bundle(neobundle_test_data)
|
|
call s:assert.equals(s:map(neobundle#config#tsort(neobundle_test_data)),
|
|
\ s:map(neobundle_test_rotated))
|
|
endfunction
|
|
|
|
function! s:map(list) abort
|
|
return map(copy(a:list), 'v:val.name')
|
|
endfunction
|
|
|