install.fairie/dotfiles/.vim/plugged/YouCompleteMe/test/completion.common.vim
Git E2E Dev Test Username 1dcbe335e1 git subrepo clone (merge) https://github.com/ycm-core/YouCompleteMe.git ./dotfiles/.vim/plugged/YouCompleteMe
subrepo:
  subdir:   "dotfiles/.vim/plugged/YouCompleteMe"
  merged:   "99ccab251"
upstream:
  origin:   "https://github.com/ycm-core/YouCompleteMe.git"
  branch:   "master"
  commit:   "99ccab251"
git-subrepo:
  version:  "0.4.3"
  origin:   "???"
  commit:   "???"
2022-10-18 10:37:46 -04:00

441 lines
14 KiB
VimL

scriptencoding utf-8
function! Test_Compl_After_Trigger()
call youcompleteme#test#setup#OpenFile(
\ '/third_party/ycmd/ycmd/tests/clangd/testdata/basic.cpp', {} )
call setpos( '.', [ 0, 11, 6 ] )
" Required to trigger TextChangedI
" https://github.com/vim/vim/issues/4665#event-2480928194
call test_override( 'char_avail', 1 )
" Must do the checks in a timer callback because we need to stay in insert
" mode until done.
function! Check( id ) closure
call WaitForCompletion()
call feedkeys( "\<ESC>" )
endfunction
call FeedAndCheckMain( 'cl.', funcref( 'Check' ) )
" Checks run in insert mode, then exit insert mode.
call assert_false( pumvisible(), 'pumvisible()' )
call test_override( 'ALL', 0 )
endfunction
function! Test_Force_Semantic_TopLevel()
call youcompleteme#test#setup#OpenFile(
\ '/third_party/ycmd/ycmd/tests/clangd/testdata/basic.cpp', {} )
call setpos( '.', [ 0, 17, 5 ] )
function! Check( id )
cal WaitForCompletion()
let items = complete_info( [ 'items' ] )[ 'items' ]
call assert_equal( 1, len( filter( items, 'v:val.abbr ==# "Foo"' ) ),
\ 'Foo should be in the suggestions' )
let items = complete_info( [ 'items' ] )[ 'items' ]
call assert_equal( 1,
\ len( filter( items, 'v:val.word ==# "__FUNCTION__"' ) ),
\ '__FUNCTION__ should be in the suggestions' )
call feedkeys( "\<ESC>" )
endfunction
call FeedAndCheckMain( "i\<C-Space>", funcref( 'Check' ) )
" Checks run in insert mode, then exit insert mode.
call assert_false( pumvisible(), 'pumvisible()' )
call test_override( 'ALL', 0 )
endfunction
function! Test_Select_Next_Previous()
call youcompleteme#test#setup#OpenFile(
\ '/third_party/ycmd/ycmd/tests/clangd/testdata/basic.cpp', {} )
call setpos( '.', [ 0, 11, 6 ] )
" Required to trigger TextChangedI
" https://github.com/vim/vim/issues/4665#event-2480928194
call test_override( 'char_avail', 1 )
function! Check( id )
call WaitForCompletion()
call CheckCurrentLine( ' foo.' )
call CheckCompletionItemsContainsExactly( [ 'c', 'x', 'y' ] )
call FeedAndCheckAgain( "\<Tab>", funcref( 'Check2' ) )
endfunction
function! Check2( id )
call WaitForCompletion()
call CheckCurrentLine( ' foo.c' )
call CheckCompletionItemsContainsExactly( [ 'c', 'x', 'y' ] )
call FeedAndCheckAgain( "\<Tab>", funcref( 'Check3' ) )
endfunction
function! Check3( id )
call WaitForCompletion()
call CheckCurrentLine( ' foo.x' )
call CheckCompletionItemsContainsExactly( [ 'c', 'x', 'y' ] )
call FeedAndCheckAgain( "\<BS>y", funcref( 'Check4' ) )
endfunction
function! Check4( id )
call WaitForCompletion()
call CheckCurrentLine( ' foo.y' )
call CheckCompletionItemsContainsExactly( [ 'y' ] )
call feedkeys( "\<ESC>" )
endfunction
call FeedAndCheckMain( 'cl.', funcref( 'Check' ) )
" Checks run in insert mode, then exit insert mode.
call assert_false( pumvisible(), 'pumvisible()' )
call test_override( 'ALL', 0 )
endfunction
function! Test_Enter_Delete_Chars_Updates_Filter()
call youcompleteme#test#setup#OpenFile(
\ 'test/testdata/cpp/completion.cc', {} )
call setpos( '.', [ 0, 23, 31 ] )
" Required to trigger TextChangedI
" https://github.com/vim/vim/issues/4665#event-2480928194
call test_override( 'char_avail', 1 )
function! Check1( id )
call WaitForCompletion()
call CheckCompletionItemsContainsExactly( [ 'colourOfLine', 'lengthOfLine' ] )
call FeedAndCheckAgain( "\<BS>", funcref( 'Check2' ) )
endfunction
function! Check2( id )
call WaitForCompletion()
call CheckCompletionItemsContainsExactly( [
\ 'operator=(…)',
\ 'colourOfLine',
\ 'lengthOfLine',
\ 'RED_AND_YELLOW' ] )
call FeedAndCheckAgain( 'w', funcref( 'Check3' ) )
endfunction
function! Check3( id )
call WaitForCompletion()
call CheckCompletionItemsContainsExactly( [ 'RED_AND_YELLOW' ] )
" now type something that doesnt match
call FeedAndCheckAgain( 'this_does_not_match', funcref( 'Check4' ) )
endfunction
function! Check4( id )
call WaitForAssert( { -> assert_false( pumvisible() ) } )
call CheckCurrentLine(
\ ' p->line.colourOfLine = Line::owthis_does_not_match' )
call CheckCompletionItemsContainsExactly( [] )
call feedkeys( "\<Esc>" )
endfunction
call FeedAndCheckMain( 'cl:ol', funcref( 'Check1' ) )
" Checks run in insert mode, then exit insert mode.
call assert_false( pumvisible(), 'pumvisible()' )
call test_override( 'ALL', 0 )
endfunction
function! SetUp_Test_Compl_No_Filetype()
call youcompleteme#test#setup#PushGlobal( 'ycm_filetype_whitelist', {
\ '*': 1,
\ 'ycm_nofiletype': 1
\ } )
call youcompleteme#test#setup#PushGlobal( 'ycm_filetype_blacklist', {} )
endfunction
function! Test_Compl_No_Filetype()
call assert_false( has_key( g:ycm_filetype_blacklist, 'ycm_nofiletype' ) )
enew
call setline( '.', 'hello this is some text ' )
" Even when fileytpe is set to '', the filetype autocommand is triggered, but
" apparently, _not_ within this function.
doautocmd FileType
call assert_equal( 1, b:ycm_completing )
" Required to trigger TextChangedI
" https://github.com/vim/vim/issues/4665#event-2480928194
call test_override( 'char_avail', 1 )
" Must do the checks in a timer callback because we need to stay in insert
" mode until done.
function! Check( id ) closure
call assert_equal( getline( '2' ), 'hell' )
call WaitForCompletion()
let items = complete_info().items
call map( items, {index, value -> value.word} )
call assert_equal( [ 'hello' ], items )
call feedkeys( "\<ESC>" )
endfunction
call FeedAndCheckMain( 'ohell', funcref( 'Check' ) )
" Checks run in insert mode, then exit insert mode.
call assert_false( pumvisible(), 'pumvisible()' )
call test_override( 'ALL', 0 )
delfunc! Check
endfunction
function! TearDown_Test_Compl_No_Filetype()
call youcompleteme#test#setup#PopGlobal( 'ycm_filetype_whitelist' )
call youcompleteme#test#setup#PopGlobal( 'ycm_filetype_blacklist' )
endfunction
function! Test_Compl_No_Filetype_Blacklisted()
call assert_true( has_key( g:ycm_filetype_blacklist, 'ycm_nofiletype' ) )
enew
call setline( '.', 'hello this is some text ' )
" Even when fileytpe is set to '', the filetype autocommand is triggered, but
" apparently, _not_ within this function.
doautocmd FileType
call assert_false( exists( 'b:ycm_completing' ) )
" Required to trigger TextChangedI
" https://github.com/vim/vim/issues/4665#event-2480928194
call test_override( 'char_avail', 1 )
" Must do the checks in a timer callback because we need to stay in insert
" mode until done.
function! Check( id ) closure
call assert_false( pumvisible() )
call feedkeys( "\<ESC>" )
endfunction
call FeedAndCheckMain( 'ohell', funcref( 'Check' ) )
" Checks run in insert mode, then exit insert mode.
call assert_false( pumvisible(), 'pumvisible()' )
call test_override( 'ALL', 0 )
delfunc! Check
endfunction
function! OmniFuncTester( findstart, query )
if a:findstart
return s:omnifunc_start_col
endif
return s:omnifunc_items
endfunction
function! SetUp_Test_OmniComplete_Filter()
call youcompleteme#test#setup#PushGlobal( 'ycm_semantic_triggers', {
\ 'omnifunc_test': [ ':', '.' ]
\ } )
endfunction
function! Test_OmniComplete_Filter()
enew
setf omnifunc_test
set omnifunc=OmniFuncTester
let s:omnifunc_start_col = 3
let s:omnifunc_items = [ 'test', 'testing', 'testy' ]
function! Check1( id )
call WaitForCompletion()
call CheckCurrentLine( 'te:te' )
call CheckCompletionItemsContainsExactly( [ 'test', 'testy', 'testing' ],
\ 'word' )
call FeedAndCheckAgain( 'y', funcref( 'Check2' ) )
endfunction
function! Check2( id )
call WaitForCompletion()
call CheckCurrentLine( 'te:tey' )
call CheckCompletionItemsContainsExactly( [ 'testy' ], 'word' )
call FeedAndCheckAgain( "\<C-n>", funcref( 'Check3' ) )
endfunction
function! Check3( id )
call WaitForCompletion()
call CheckCurrentLine( 'te:testy' )
call CheckCompletionItemsContainsExactly( [ 'testy' ], 'word' )
call FeedAndCheckAgain( "\<C-p>", funcref( 'Check4' ) )
endfunction
function! Check4( id )
call WaitForCompletion()
call CheckCurrentLine( 'te:tey' )
call CheckCompletionItemsContainsExactly( [ 'testy' ], 'word' )
call feedkeys( "\<Esc>" )
endfunction
call setline(1, 'te:' )
call setpos( '.', [ 0, 1, 3 ] )
call FeedAndCheckMain( 'ate', 'Check1' )
endfunction
function! TearDown_Test_OmniComplete_Filter()
call youcompleteme#test#setup#PopGlobal( 'ycm_semantic_triggers' )
endfunction
function! Test_OmniComplete_Force()
enew
setf omnifunc_test
set omnifunc=OmniFuncTester
let s:omnifunc_start_col = 0
let s:omnifunc_items = [ 'test', 'testing', 'testy' ]
function! Check1( id )
call WaitForCompletion()
call CheckCurrentLine( 'te' )
call CheckCompletionItemsContainsExactly( [ 'test', 'testy', 'testing' ],
\ 'word' )
call FeedAndCheckAgain( 'y', funcref( 'Check2' ) )
endfunction
function! Check2( id )
call WaitForCompletion()
call CheckCurrentLine( 'tey' )
call CheckCompletionItemsContainsExactly( [ 'testy' ], 'word' )
call FeedAndCheckAgain( "\<C-n>", funcref( 'Check3' ) )
endfunction
function! Check3( id )
call WaitForCompletion()
call CheckCurrentLine( 'testy' )
call CheckCompletionItemsContainsExactly( [ 'testy' ], 'word' )
call FeedAndCheckAgain( "\<C-p>", funcref( 'Check4' ) )
endfunction
function! Check4( id )
call WaitForCompletion()
call CheckCurrentLine( 'tey' )
call CheckCompletionItemsContainsExactly( [ 'testy' ], 'word' )
call feedkeys( "\<Esc>" )
endfunction
call setline(1, 'te' )
call setpos( '.', [ 0, 1, 3 ] )
call FeedAndCheckMain( "a\<C-Space>", 'Check1' )
endfunction
function! Test_Completion_FixIt()
" There's a bug in clangd where you have to open a file which includes the
" file you want to auto-include before it will actually auto-include that
" file, auto_include_workaround #includes auto_include.h, so that clangd knows
" about it
call youcompleteme#test#setup#OpenFile(
\ 'test/testdata/cpp/auto_include_workaround.cc', {} )
call youcompleteme#test#setup#OpenFile(
\ 'test/testdata/cpp/auto_include.cc', {} )
function! Check1( id )
call WaitForCompletion()
call CheckCurrentLine( 'do_a' )
call CheckCompletionItemsContainsExactly( [ 'do_a_thing(Thing thing)',
\ 'do_another_thing()' ] )
call FeedAndCheckAgain( "\<Tab>" , funcref( 'Check2' ) )
endfunction
function! Check2( id )
call WaitForCompletion()
call CheckCurrentLine( 'do_a_thing' )
call CheckCompletionItemsContainsExactly( [ 'do_a_thing(Thing thing)',
\ 'do_another_thing()' ] )
call FeedAndCheckAgain( '(' , funcref( 'Check3' ) )
endfunction
function! Check3( id )
call WaitForAssert( {-> assert_false( pumvisible(), 'pumvisible()' ) } )
call CheckCurrentLine( 'do_a_thing(' )
call assert_equal( '#include "auto_include.h"', getline( 1 ) )
call feedkeys( "\<Esc>" )
endfunction
call setpos( '.', [ 0, 3, 1 ] )
call FeedAndCheckMain( "Ado_a\<C-Space>", funcref( 'Check1' ) )
endfunction
function! Test_Select_Next_Previous_InsertModeMapping()
call youcompleteme#test#setup#OpenFile(
\ '/third_party/ycmd/ycmd/tests/clangd/testdata/basic.cpp', {} )
call setpos( '.', [ 0, 11, 6 ] )
inoremap <C-n> <Down>
" Required to trigger TextChangedI
" https://github.com/vim/vim/issues/4665#event-2480928194
call test_override( 'char_avail', 1 )
function! Check( id )
call WaitForCompletion()
call CheckCurrentLine( ' foo.' )
call CheckCompletionItemsContainsExactly( [ 'c', 'x', 'y' ] )
call FeedAndCheckAgain( "\<C-n>", funcref( 'Check2' ) )
endfunction
function! Check2( id )
call WaitForCompletion()
call CheckCurrentLine( ' foo.c' )
call CheckCompletionItemsContainsExactly( [ 'c', 'x', 'y' ] )
call FeedAndCheckAgain( "\<C-n>", funcref( 'Check3' ) )
endfunction
function! Check3( id )
call WaitForCompletion()
call CheckCurrentLine( ' foo.x' )
call CheckCompletionItemsContainsExactly( [ 'c', 'x', 'y' ] )
call FeedAndCheckAgain( "\<BS>a", funcref( 'Check4' ) )
endfunction
function! Check4( id )
call CheckCurrentLine( ' foo.a' )
call CheckCompletionItemsContainsExactly( [] )
call FeedAndCheckAgain( "\<C-n>", funcref( 'Check5' ) )
endfunction
function! Check5( id )
" The last ctrl-n moved to the next line
call CheckCurrentLine( '}' )
call assert_equal( [ 0, 12, 2, 0 ], getpos( '.' ) )
call CheckCompletionItemsContainsExactly( [] )
call feedkeys( "\<Esc>" )
endfunction
call FeedAndCheckMain( 'cl.', funcref( 'Check' ) )
" Checks run in insert mode, then exit insert mode.
call assert_false( pumvisible(), 'pumvisible()' )
call test_override( 'ALL', 0 )
iunmap <C-n>
endfunction
function! Test_Completion_WorksWithoutMovingCursor()
call youcompleteme#test#setup#OpenFile(
\ 'test/testdata/cpp/auto_include_workaround.cc', {} )
function! Check( id )
call WaitForCompletion() " We don't care about completion
" items, just that we didn't error
" while opening the completion pum
" without typing anything first.
call feedkeys( "\<Esc>" )
endfunction
call setpos( '.', [ 0, 3, 1 ] )
call FeedAndCheckMain( "i\<C-Space>", funcref( 'Check' ) )
endfunction