Procházet zdrojové kódy

Add way to backup/restore setting in tests

Added youcompleteme#test#setup#PushGlobal and PopGlobal, used in SetUp
and TearDown fixtures for individual test funcitons.
Ben Jackson před 4 roky
rodič
revize
38cd7416e8

+ 8 - 8
test/completion.common.vim

@@ -149,11 +149,11 @@ function! Test_Enter_Delete_Chars_Updates_Filter()
 endfunction
 
 function! SetUp_Test_Compl_No_Filetype()
-  let g:ycm_filetype_whitelist = {
+  call youcompleteme#test#setup#PushGlobal( 'ycm_filetype_whitelist', {
         \ '*': 1,
         \ 'ycm_nofiletype': 1
-        \ }
-  silent! call remove( g:ycm_filetype_blacklist, 'ycm_nofiletype' )
+        \ } )
+  call youcompleteme#test#setup#PushGlobal( 'ycm_filetype_blacklist', {} )
 endfunction
 
 function! Test_Compl_No_Filetype()
@@ -190,8 +190,8 @@ function! Test_Compl_No_Filetype()
 endfunction
 
 function! TearDown_Test_Compl_No_Filetype()
-  call remove( g:ycm_filetype_whitelist, 'ycm_nofiletype' )
-  let g:ycm_filetype_blacklist[ 'ycm_nofiletype' ] = 1
+  call youcompleteme#test#setup#PopGlobal( 'ycm_filetype_whitelist' )
+  call youcompleteme#test#setup#PopGlobal( 'ycm_filetype_blacklist' )
 endfunction
 
 function! Test_Compl_No_Filetype_Blacklisted()
@@ -232,9 +232,9 @@ function! OmniFuncTester( findstart, query )
 endfunction
 
 function! SetUp_Test_OmniComplete_Filter()
-  let g:ycm_semantic_triggers = {
+  call youcompleteme#test#setup#PushGlobal( 'ycm_semantic_triggers', {
         \ 'omnifunc_test': [ ':', '.' ]
-        \ }
+        \ } )
 endfunction
 
 function! Test_OmniComplete_Filter()
@@ -279,7 +279,7 @@ function! Test_OmniComplete_Filter()
 endfunction
 
 function! TearDown_Test_OmniComplete_Filter()
-  unlet g:ycm_semantic_triggers
+  call youcompleteme#test#setup#PopGlobal( 'ycm_semantic_triggers' )
 endfunction
 
 function! Test_OmniComplete_Force()

+ 31 - 0
test/lib/autoload/youcompleteme/test/setup.vim

@@ -63,3 +63,34 @@ function! youcompleteme#test#setup#OpenFile( f, kwargs ) abort
 
   " FIXME: We need a much more robust way to wait for the server to be ready
 endfunction
+
+let s:g_stack = {}
+
+function! youcompleteme#test#setup#PushGlobal( name, value )
+  if !has_key( s:g_stack, a:name )
+    let s:g_stack[ a:name ] = []
+  endif
+
+  let old_value = get( g:, a:name, v:null )
+  call add( s:g_stack[ a:name ], old_value )
+  call extend( g:, { a:name: a:value  } )
+
+  return old_value
+endfunction
+
+function! youcompleteme#test#setup#PopGlobal( name )
+  if !has_key( s:g_stack, a:name ) || len( s:g_stack[ a:name ] ) == 0
+    return v:null
+  endif
+
+  let old_value = s:g_stack[ a:name ][ -1 ]
+  call remove( s:g_stack[ a:name ], -1 )
+
+  if old_value is v:null
+    silent! call remove( g:, a:name )
+  else
+    call extend( g:, { a:name: old_value  } )
+  endif
+
+  return old_value
+endfunction

+ 11 - 9
test/signature_help.test.vim

@@ -574,7 +574,8 @@ endfunction
 
 function! SetUp_Test_Semantic_Completion_Popup_With_Sig_Help()
   set signcolumn=no
-  let g:ycm_add_preview_to_completeopt = 'popup'
+  call youcompleteme#test#setup#PushGlobal( 'ycm_add_preview_to_completeopt',
+                                          \ 'popup' )
 endfunction
 
 function! Test_Semantic_Completion_Popup_With_Sig_Help()
@@ -664,17 +665,18 @@ endfunction
 
 function! TearDown_Test_Semantic_Completion_Popup_With_Sig_Help()
   set signcolumn&
-  unlet! g:ycm_add_preview_to_completeopt
+  call youcompleteme#test#setup#PopGlobal( 'ycm_add_preview_to_completeopt' )
 endfunction
 
 function! SetUp_Test_Semantic_Completion_Popup_With_Sig_Help_EmptyBuf()
   set signcolumn=no
-  let g:ycm_filetype_whitelist = {
+  call youcompleteme#test#setup#PushGlobal( 'ycm_filetype_whitelist', {
         \ '*': 1,
         \ 'ycm_nofiletype': 1
-        \ }
-  silent! call remove( g:ycm_filetype_blacklist, 'ycm_nofiletype' )
-  let g:ycm_add_preview_to_completeopt = 'popup'
+        \ } )
+  call youcompleteme#test#setup#PushGlobal( 'ycm_filetype_blacklist', {} )
+  call youcompleteme#test#setup#PushGlobal( 'ycm_add_preview_to_completeopt',
+                                          \ 'popup' )
 endfunction
 
 function! Test_Semantic_Completion_Popup_With_Sig_Help_EmptyBuf()
@@ -775,7 +777,7 @@ endfunction
 
 function! TearDown_Test_Semantic_Completion_Popup_With_Sig_Help_EmptyBuf()
   set signcolumn&
-  unlet! g:ycm_add_preview_to_completeopt
-  call remove( g:ycm_filetype_whitelist, 'ycm_nofiletype' )
-  let g:ycm_filetype_blacklist[ 'ycm_nofiletype' ] = 1
+  call youcompleteme#test#setup#PopGlobal( 'ycm_filetype_whitelist' )
+  call youcompleteme#test#setup#PopGlobal( 'ycm_filetype_blacklist' )
+  call youcompleteme#test#setup#PopGlobal( 'ycm_add_preview_to_completeopt' )
 endfunction