mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	test(old): emulate test_override('char_avail') using FFI
Add a non-static variable for this, otherwise it'll be really hacky.
This avoid having to rewrite many incsearch tests in Lua.
(cherry picked from commit c925e7b8ba)
			
			
This commit is contained in:
		
				
					committed by
					
						
						github-actions[bot]
					
				
			
			
				
	
			
			
			
						parent
						
							f0f163b267
						
					
				
				
					commit
					d1214da08f
				
			@@ -1866,6 +1866,9 @@ int vpeekc_any(void)
 | 
				
			|||||||
/// @return  true if a character is available, false otherwise.
 | 
					/// @return  true if a character is available, false otherwise.
 | 
				
			||||||
bool char_avail(void)
 | 
					bool char_avail(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (disable_char_avail_for_testing) {
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  no_mapping++;
 | 
					  no_mapping++;
 | 
				
			||||||
  int retval = vpeekc();
 | 
					  int retval = vpeekc();
 | 
				
			||||||
  no_mapping--;
 | 
					  no_mapping--;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,6 +17,8 @@ typedef enum {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
enum { NSCRIPT = 15, };  ///< Maximum number of streams to read script from
 | 
					enum { NSCRIPT = 15, };  ///< Maximum number of streams to read script from
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXTERN bool disable_char_avail_for_testing INIT( = false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef INCLUDE_GENERATED_DECLARATIONS
 | 
					#ifdef INCLUDE_GENERATED_DECLARATIONS
 | 
				
			||||||
# include "getchar.h.generated.h"
 | 
					# include "getchar.h.generated.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -166,6 +166,57 @@ endif
 | 
				
			|||||||
" Prepare for calling test_garbagecollect_now().
 | 
					" Prepare for calling test_garbagecollect_now().
 | 
				
			||||||
let v:testing = 1
 | 
					let v:testing = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					let s:has_ffi = luaeval('pcall(require, "ffi")')
 | 
				
			||||||
 | 
					if s:has_ffi
 | 
				
			||||||
 | 
					  lua << trim EOF
 | 
				
			||||||
 | 
					    require('ffi').cdef([[
 | 
				
			||||||
 | 
					      int starting;
 | 
				
			||||||
 | 
					      bool disable_char_avail_for_testing;
 | 
				
			||||||
 | 
					    ]])
 | 
				
			||||||
 | 
					  EOF
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					" This can emulate test_override('starting') and test_override('char_avail')
 | 
				
			||||||
 | 
					" if LuaJIT FFI is enabled.
 | 
				
			||||||
 | 
					" Other flags are not supported.
 | 
				
			||||||
 | 
					func Ntest_override(name, val)
 | 
				
			||||||
 | 
					  if a:name !=# 'starting' && a:name != 'char_avail' && a:name !=# 'ALL'
 | 
				
			||||||
 | 
					    throw 'Unexpected use of Ntest_override()'
 | 
				
			||||||
 | 
					  endif
 | 
				
			||||||
 | 
					  if !s:has_ffi
 | 
				
			||||||
 | 
					    throw 'Skipped: missing LuaJIT FFI'
 | 
				
			||||||
 | 
					  endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if a:name ==# 'starting' || a:name ==# 'ALL'
 | 
				
			||||||
 | 
					    if a:val
 | 
				
			||||||
 | 
					      if !exists('s:save_starting')
 | 
				
			||||||
 | 
					        let s:save_starting = luaeval('require("ffi").C.starting')
 | 
				
			||||||
 | 
					      endif
 | 
				
			||||||
 | 
					      lua require("ffi").C.starting = 0
 | 
				
			||||||
 | 
					    elseif exists('s:save_starting')
 | 
				
			||||||
 | 
					      exe 'lua require("ffi").C.starting =' s:save_starting
 | 
				
			||||||
 | 
					      unlet s:save_starting
 | 
				
			||||||
 | 
					    endif
 | 
				
			||||||
 | 
					  endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if a:name ==# 'char_avail' || a:name ==# 'ALL'
 | 
				
			||||||
 | 
					    exe 'lua require("ffi").C.disable_char_avail_for_testing =' a:val
 | 
				
			||||||
 | 
					  endif
 | 
				
			||||||
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					" roughly equivalent to test_setmouse() in Vim
 | 
				
			||||||
 | 
					func Ntest_setmouse(row, col)
 | 
				
			||||||
 | 
					  call nvim_input_mouse('move', '', '', 0, a:row - 1, a:col - 1)
 | 
				
			||||||
 | 
					  if state('m') == ''
 | 
				
			||||||
 | 
					    call getchar(0)
 | 
				
			||||||
 | 
					  endif
 | 
				
			||||||
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					" roughly equivalent to term_wait() in Vim
 | 
				
			||||||
 | 
					func Nterm_wait(buf, time = 10)
 | 
				
			||||||
 | 
					  execute $'sleep {a:time}m'
 | 
				
			||||||
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
" Support function: get the alloc ID by name.
 | 
					" Support function: get the alloc ID by name.
 | 
				
			||||||
func GetAllocId(name)
 | 
					func GetAllocId(name)
 | 
				
			||||||
  exe 'split ' . s:srcdir . '/alloc.h'
 | 
					  exe 'split ' . s:srcdir . '/alloc.h'
 | 
				
			||||||
@@ -277,6 +328,10 @@ func RunTheTest(test)
 | 
				
			|||||||
      call add(s:skipped, 'SKIPPED ' . a:test . ': ' . g:skipped_reason)
 | 
					      call add(s:skipped, 'SKIPPED ' . a:test . ': ' . g:skipped_reason)
 | 
				
			||||||
      let skipped = v:true
 | 
					      let skipped = v:true
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					  elseif !s:has_ffi && execute('func ' .. a:test[:-3])->match("\n[ 0-9]*call Ntest_override(") >= 0
 | 
				
			||||||
 | 
					    call add(s:messages, '    Skipped')
 | 
				
			||||||
 | 
					    call add(s:skipped, 'SKIPPED ' . a:test . ': missing LuaJIT FFI' . )
 | 
				
			||||||
 | 
					    let skipped = v:true
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
    try
 | 
					    try
 | 
				
			||||||
      exe 'call ' . a:test
 | 
					      exe 'call ' . a:test
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -71,44 +71,6 @@ autocmd! nvim.popupmenu
 | 
				
			|||||||
" Undo the 'grepprg' and 'grepformat' setting in _defaults.lua.
 | 
					" Undo the 'grepprg' and 'grepformat' setting in _defaults.lua.
 | 
				
			||||||
set grepprg& grepformat&
 | 
					set grepprg& grepformat&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
let s:has_ffi = luaeval('pcall(require, "ffi")')
 | 
					 | 
				
			||||||
if s:has_ffi
 | 
					 | 
				
			||||||
  lua require("ffi").cdef("int starting;")
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" This can emulate test_override('starting', val) if LuaJIT FFI is enabled.
 | 
					 | 
				
			||||||
" Other flags are not supported.
 | 
					 | 
				
			||||||
func Ntest_override(name, val)
 | 
					 | 
				
			||||||
  if a:name !=# 'starting'
 | 
					 | 
				
			||||||
    throw "Do not use Ntest_override() for this"
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
  if !s:has_ffi
 | 
					 | 
				
			||||||
    throw 'Skipped: missing LuaJIT FFI'
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
  if a:val
 | 
					 | 
				
			||||||
    if !exists('s:save_starting')
 | 
					 | 
				
			||||||
      let s:save_starting = luaeval('require("ffi").C.starting')
 | 
					 | 
				
			||||||
    endif
 | 
					 | 
				
			||||||
    lua require("ffi").C.starting = 0
 | 
					 | 
				
			||||||
  else
 | 
					 | 
				
			||||||
    exe 'lua require("ffi").C.starting =' s:save_starting
 | 
					 | 
				
			||||||
    unlet s:save_starting
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
endfunc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" roughly equivalent to test_setmouse() in Vim
 | 
					 | 
				
			||||||
func Ntest_setmouse(row, col)
 | 
					 | 
				
			||||||
  call nvim_input_mouse('move', '', '', 0, a:row - 1, a:col - 1)
 | 
					 | 
				
			||||||
  if state('m') == ''
 | 
					 | 
				
			||||||
    call getchar(0)
 | 
					 | 
				
			||||||
  endif
 | 
					 | 
				
			||||||
endfunc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" roughly equivalent to term_wait() in Vim
 | 
					 | 
				
			||||||
func Nterm_wait(buf, time = 10)
 | 
					 | 
				
			||||||
  execute $'sleep {a:time}m'
 | 
					 | 
				
			||||||
endfunc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
" Prevent Nvim log from writing to stderr.
 | 
					" Prevent Nvim log from writing to stderr.
 | 
				
			||||||
let $NVIM_LOG_FILE = exists($NVIM_LOG_FILE) ? $NVIM_LOG_FILE : 'Xnvim.log'
 | 
					let $NVIM_LOG_FILE = exists($NVIM_LOG_FILE) ? $NVIM_LOG_FILE : 'Xnvim.log'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2519,10 +2519,9 @@ endfunc
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
" Test TextChangedI and TextChangedP
 | 
					" Test TextChangedI and TextChangedP
 | 
				
			||||||
func Test_ChangedP()
 | 
					func Test_ChangedP()
 | 
				
			||||||
  throw 'Skipped: use test/functional/autocmd/textchanged_spec.lua'
 | 
					 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['foo', 'bar', 'foobar'])
 | 
					  call setline(1, ['foo', 'bar', 'foobar'])
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  set complete=. completeopt=menuone
 | 
					  set complete=. completeopt=menuone
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  func! TextChangedAutocmd(char)
 | 
					  func! TextChangedAutocmd(char)
 | 
				
			||||||
@@ -2563,7 +2562,7 @@ func Test_ChangedP()
 | 
				
			|||||||
  " TODO: how should it handle completeopt=noinsert,noselect?
 | 
					  " TODO: how should it handle completeopt=noinsert,noselect?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  " CleanUp
 | 
					  " CleanUp
 | 
				
			||||||
  call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  au! TextChanged
 | 
					  au! TextChanged
 | 
				
			||||||
  au! TextChangedI
 | 
					  au! TextChangedI
 | 
				
			||||||
  au! TextChangedP
 | 
					  au! TextChangedP
 | 
				
			||||||
@@ -2583,9 +2582,8 @@ func SetLineOne()
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_TextChangedI_with_setline()
 | 
					func Test_TextChangedI_with_setline()
 | 
				
			||||||
  throw 'Skipped: use test/functional/autocmd/textchanged_spec.lua'
 | 
					 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call test_override('char_avail', 1)
 | 
					  call Ntest_override('char_avail', 1)
 | 
				
			||||||
  autocmd TextChangedI <buffer> call SetLineOne()
 | 
					  autocmd TextChangedI <buffer> call SetLineOne()
 | 
				
			||||||
  call feedkeys("i(\<CR>\<Esc>", 'tx')
 | 
					  call feedkeys("i(\<CR>\<Esc>", 'tx')
 | 
				
			||||||
  call assert_equal('(', getline(1))
 | 
					  call assert_equal('(', getline(1))
 | 
				
			||||||
@@ -2594,7 +2592,7 @@ func Test_TextChangedI_with_setline()
 | 
				
			|||||||
  call assert_equal('', getline(1))
 | 
					  call assert_equal('', getline(1))
 | 
				
			||||||
  call assert_equal('', getline(2))
 | 
					  call assert_equal('', getline(2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  call test_override('char_avail', 0)
 | 
					  call Ntest_override('char_avail', 0)
 | 
				
			||||||
  bwipe!
 | 
					  bwipe!
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -724,15 +724,14 @@ func Test_edit_CTRL_K()
 | 
				
			|||||||
    let v:testing = 0
 | 
					    let v:testing = 0
 | 
				
			||||||
  endtry
 | 
					  endtry
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if exists('*test_override')
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
    call test_override("char_avail", 1)
 | 
					 | 
				
			||||||
  set showcmd
 | 
					  set showcmd
 | 
				
			||||||
  %d
 | 
					  %d
 | 
				
			||||||
  call feedkeys("A\<c-k>a:\<esc>", 'tnix')
 | 
					  call feedkeys("A\<c-k>a:\<esc>", 'tnix')
 | 
				
			||||||
  call assert_equal(['ä'], getline(1, '$'))
 | 
					  call assert_equal(['ä'], getline(1, '$'))
 | 
				
			||||||
    call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  set noshowcmd
 | 
					  set noshowcmd
 | 
				
			||||||
  endif
 | 
					
 | 
				
			||||||
  bw!
 | 
					  bw!
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -764,9 +763,9 @@ func Test_edit_CTRL_L()
 | 
				
			|||||||
  call assert_equal(['one', 'two', 'three', 'three', "\<c-l>\<c-p>\<c-n>", '', ''], getline(1, '$'))
 | 
					  call assert_equal(['one', 'two', 'three', 'three', "\<c-l>\<c-p>\<c-n>", '', ''], getline(1, '$'))
 | 
				
			||||||
  set complete&
 | 
					  set complete&
 | 
				
			||||||
  %d
 | 
					  %d
 | 
				
			||||||
  if has("conceal") && has("syntax") && !has("nvim")
 | 
					  if has("conceal") && has("syntax")
 | 
				
			||||||
    call setline(1, ['foo', 'bar', 'foobar'])
 | 
					    call setline(1, ['foo', 'bar', 'foobar'])
 | 
				
			||||||
    call test_override("char_avail", 1)
 | 
					    call Ntest_override("char_avail", 1)
 | 
				
			||||||
    set conceallevel=2 concealcursor=n
 | 
					    set conceallevel=2 concealcursor=n
 | 
				
			||||||
    syn on
 | 
					    syn on
 | 
				
			||||||
    syn match ErrorMsg "^bar"
 | 
					    syn match ErrorMsg "^bar"
 | 
				
			||||||
@@ -782,7 +781,7 @@ func Test_edit_CTRL_L()
 | 
				
			|||||||
    call assert_equal(['foo', 'bar ', 'foobar'], getline(1, '$'))
 | 
					    call assert_equal(['foo', 'bar ', 'foobar'], getline(1, '$'))
 | 
				
			||||||
    call assert_equal(1, g:change)
 | 
					    call assert_equal(1, g:change)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    call test_override("char_avail", 0)
 | 
					    call Ntest_override("char_avail", 0)
 | 
				
			||||||
    call clearmatches()
 | 
					    call clearmatches()
 | 
				
			||||||
    syn off
 | 
					    syn off
 | 
				
			||||||
    au! TextChangedI
 | 
					    au! TextChangedI
 | 
				
			||||||
@@ -1157,7 +1156,7 @@ func Test_edit_CTRL_V()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  " force some redraws
 | 
					  " force some redraws
 | 
				
			||||||
  set showmode showcmd
 | 
					  set showmode showcmd
 | 
				
			||||||
  " call test_override('char_avail', 1)
 | 
					  call Ntest_override('char_avail', 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  call feedkeys("A\<c-v>\<c-n>\<c-v>\<c-l>\<c-v>\<c-b>\<esc>", 'tnix')
 | 
					  call feedkeys("A\<c-v>\<c-n>\<c-v>\<c-l>\<c-v>\<c-b>\<esc>", 'tnix')
 | 
				
			||||||
  call assert_equal(["abc\x0e\x0c\x02"], getline(1, '$'))
 | 
					  call assert_equal(["abc\x0e\x0c\x02"], getline(1, '$'))
 | 
				
			||||||
@@ -1172,7 +1171,7 @@ func Test_edit_CTRL_V()
 | 
				
			|||||||
  endif
 | 
					  endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set noshowmode showcmd
 | 
					  set noshowmode showcmd
 | 
				
			||||||
  " call test_override('char_avail', 0)
 | 
					  call Ntest_override('char_avail', 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  " No modifiers should be applied to the char typed using i_CTRL-V_digit.
 | 
					  " No modifiers should be applied to the char typed using i_CTRL-V_digit.
 | 
				
			||||||
  call feedkeys(":append\<CR>\<C-V>76c\<C-V>76\<C-F2>\<C-V>u3c0j\<C-V>u3c0\<M-F3>\<CR>.\<CR>", 'tnix')
 | 
					  call feedkeys(":append\<CR>\<C-V>76c\<C-V>76\<C-F2>\<C-V>u3c0j\<C-V>u3c0\<M-F3>\<CR>.\<CR>", 'tnix')
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1004,7 +1004,6 @@ func Test_popup_complete_backwards_ctrl_p()
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_complete_o_tab()
 | 
					func Test_complete_o_tab()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  let s:o_char_pressed = 0
 | 
					  let s:o_char_pressed = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  fun! s:act_on_text_changed()
 | 
					  fun! s:act_on_text_changed()
 | 
				
			||||||
@@ -1022,12 +1021,12 @@ func Test_complete_o_tab()
 | 
				
			|||||||
  call setline(1,  ['hoard', 'hoax', 'hoarse', ''])
 | 
					  call setline(1,  ['hoard', 'hoax', 'hoarse', ''])
 | 
				
			||||||
  let l:expected = ['hoard', 'hoax', 'hoarse', 'hoax', 'hoax']
 | 
					  let l:expected = ['hoard', 'hoax', 'hoarse', 'hoax', 'hoax']
 | 
				
			||||||
  call cursor(4,1)
 | 
					  call cursor(4,1)
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  call feedkeys("Ahoa\<tab>\<tab>\<c-y>\<esc>", 'tx')
 | 
					  call feedkeys("Ahoa\<tab>\<tab>\<c-y>\<esc>", 'tx')
 | 
				
			||||||
  call feedkeys("oho\<tab>\<tab>\<c-y>\<esc>", 'tx')
 | 
					  call feedkeys("oho\<tab>\<tab>\<c-y>\<esc>", 'tx')
 | 
				
			||||||
  call assert_equal(l:expected, getline(1,'$'))
 | 
					  call assert_equal(l:expected, getline(1,'$'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  bwipe!
 | 
					  bwipe!
 | 
				
			||||||
  set completeopt&
 | 
					  set completeopt&
 | 
				
			||||||
  delfunc s:act_on_text_changed
 | 
					  delfunc s:act_on_text_changed
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3072,16 +3072,15 @@ endfunc
 | 
				
			|||||||
" Test for incsearch highlighting of the :vimgrep pattern
 | 
					" Test for incsearch highlighting of the :vimgrep pattern
 | 
				
			||||||
" This test used to cause "E315: ml_get: invalid lnum" errors.
 | 
					" This test used to cause "E315: ml_get: invalid lnum" errors.
 | 
				
			||||||
func Test_vimgrep_incsearch()
 | 
					func Test_vimgrep_incsearch()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  enew
 | 
					  enew
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  call feedkeys(":2vimgrep assert test_quickfix.vim test_cdo.vim\<CR>", "ntx")
 | 
					  call feedkeys(":2vimgrep assert test_quickfix.vim test_cdo.vim\<CR>", "ntx")
 | 
				
			||||||
  let l = getqflist()
 | 
					  let l = getqflist()
 | 
				
			||||||
  call assert_equal(2, len(l))
 | 
					  call assert_equal(2, len(l))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  call test_override("ALL", 0)
 | 
					  call Ntest_override("ALL", 0)
 | 
				
			||||||
  set noincsearch
 | 
					  set noincsearch
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,14 +4,12 @@ source shared.vim
 | 
				
			|||||||
source screendump.vim
 | 
					source screendump.vim
 | 
				
			||||||
source check.vim
 | 
					source check.vim
 | 
				
			||||||
 | 
					
 | 
				
			||||||
" See test/functional/legacy/search_spec.lua
 | 
					 | 
				
			||||||
func Test_search_cmdline()
 | 
					func Test_search_cmdline()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  " need to disable char_avail,
 | 
					  " need to disable char_avail,
 | 
				
			||||||
  " so that expansion of commandline works
 | 
					  " so that expansion of commandline works
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['  1', '  2 these', '  3 the', '  4 their', '  5 there', '  6 their', '  7 the', '  8 them', '  9 these', ' 10 foobar'])
 | 
					  call setline(1, ['  1', '  2 these', '  3 the', '  4 their', '  5 there', '  6 their', '  7 the', '  8 them', '  9 these', ' 10 foobar'])
 | 
				
			||||||
  " Test 1
 | 
					  " Test 1
 | 
				
			||||||
@@ -198,18 +196,16 @@ func Test_search_cmdline()
 | 
				
			|||||||
  call assert_equal('  3 the', getline('.'))
 | 
					  call assert_equal('  3 the', getline('.'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  " clean up
 | 
					  " clean up
 | 
				
			||||||
  call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  bw!
 | 
					  bw!
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
" See test/functional/legacy/search_spec.lua
 | 
					 | 
				
			||||||
func Test_search_cmdline2()
 | 
					func Test_search_cmdline2()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  " need to disable char_avail,
 | 
					  " need to disable char_avail,
 | 
				
			||||||
  " so that expansion of commandline works
 | 
					  " so that expansion of commandline works
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['  1', '  2 these', '  3 the theother'])
 | 
					  call setline(1, ['  1', '  2 these', '  3 the theother'])
 | 
				
			||||||
  " Test 1
 | 
					  " Test 1
 | 
				
			||||||
@@ -275,7 +271,7 @@ func Test_search_cmdline2()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  " clean up
 | 
					  " clean up
 | 
				
			||||||
  set noincsearch
 | 
					  set noincsearch
 | 
				
			||||||
  call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  bw!
 | 
					  bw!
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -434,19 +430,17 @@ func Test_searchc()
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Cmdline3_prep()
 | 
					func Cmdline3_prep()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  " need to disable char_avail,
 | 
					  " need to disable char_avail,
 | 
				
			||||||
  " so that expansion of commandline works
 | 
					  " so that expansion of commandline works
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['  1', '  2 the~e', '  3 the theother'])
 | 
					  call setline(1, ['  1', '  2 the~e', '  3 the theother'])
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Incsearch_cleanup()
 | 
					func Incsearch_cleanup()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  set noincsearch
 | 
					  set noincsearch
 | 
				
			||||||
  call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  bw!
 | 
					  bw!
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -525,14 +519,12 @@ func Test_search_cmdline3v()
 | 
				
			|||||||
  call Incsearch_cleanup()
 | 
					  call Incsearch_cleanup()
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
" See test/functional/legacy/search_spec.lua
 | 
					 | 
				
			||||||
func Test_search_cmdline4()
 | 
					func Test_search_cmdline4()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  " need to disable char_avail,
 | 
					  " need to disable char_avail,
 | 
				
			||||||
  " so that expansion of commandline works
 | 
					  " so that expansion of commandline works
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['  1 the first', '  2 the second', '  3 the third'])
 | 
					  call setline(1, ['  1 the first', '  2 the second', '  3 the third'])
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
@@ -556,7 +548,7 @@ func Test_search_cmdline4()
 | 
				
			|||||||
  call assert_equal('  2 the second', getline('.'))
 | 
					  call assert_equal('  2 the second', getline('.'))
 | 
				
			||||||
  " clean up
 | 
					  " clean up
 | 
				
			||||||
  set noincsearch
 | 
					  set noincsearch
 | 
				
			||||||
  call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  bw!
 | 
					  bw!
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -582,12 +574,11 @@ endfunc
 | 
				
			|||||||
func Test_search_cmdline6()
 | 
					func Test_search_cmdline6()
 | 
				
			||||||
  " Test that consecutive matches
 | 
					  " Test that consecutive matches
 | 
				
			||||||
  " are caught by <c-g>/<c-t>
 | 
					  " are caught by <c-g>/<c-t>
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  " need to disable char_avail,
 | 
					  " need to disable char_avail,
 | 
				
			||||||
  " so that expansion of commandline works
 | 
					  " so that expansion of commandline works
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, [' bbvimb', ''])
 | 
					  call setline(1, [' bbvimb', ''])
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
@@ -615,12 +606,11 @@ func Test_search_cmdline6()
 | 
				
			|||||||
  " clean up
 | 
					  " clean up
 | 
				
			||||||
  set wrapscan&vim
 | 
					  set wrapscan&vim
 | 
				
			||||||
  set noincsearch
 | 
					  set noincsearch
 | 
				
			||||||
  call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  bw!
 | 
					  bw!
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_search_cmdline7()
 | 
					func Test_search_cmdline7()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  " Test that pressing <c-g> in an empty command line
 | 
					  " Test that pressing <c-g> in an empty command line
 | 
				
			||||||
  " does not move the cursor
 | 
					  " does not move the cursor
 | 
				
			||||||
  if !exists('+incsearch')
 | 
					  if !exists('+incsearch')
 | 
				
			||||||
@@ -628,7 +618,7 @@ func Test_search_cmdline7()
 | 
				
			|||||||
  endif
 | 
					  endif
 | 
				
			||||||
  " need to disable char_avail,
 | 
					  " need to disable char_avail,
 | 
				
			||||||
  " so that expansion of commandline works
 | 
					  " so that expansion of commandline works
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  let @/ = 'b'
 | 
					  let @/ = 'b'
 | 
				
			||||||
  call setline(1, [' bbvimb', ''])
 | 
					  call setline(1, [' bbvimb', ''])
 | 
				
			||||||
@@ -654,7 +644,7 @@ func Test_search_cmdline7()
 | 
				
			|||||||
  call assert_equal(4, col('.'))
 | 
					  call assert_equal(4, col('.'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set noincsearch
 | 
					  set noincsearch
 | 
				
			||||||
  call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  bw!
 | 
					  bw!
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -765,13 +755,12 @@ func Test_search_regexp()
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_search_cmdline_incsearch_highlight()
 | 
					func Test_search_cmdline_incsearch_highlight()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set incsearch hlsearch
 | 
					  set incsearch hlsearch
 | 
				
			||||||
  " need to disable char_avail,
 | 
					  " need to disable char_avail,
 | 
				
			||||||
  " so that expansion of commandline works
 | 
					  " so that expansion of commandline works
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['aaa  1 the first', '  2 the second', '  3 the third'])
 | 
					  call setline(1, ['aaa  1 the first', '  2 the second', '  3 the third'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -794,7 +783,7 @@ func Test_search_cmdline_incsearch_highlight()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  " clean up
 | 
					  " clean up
 | 
				
			||||||
  set noincsearch nohlsearch
 | 
					  set noincsearch nohlsearch
 | 
				
			||||||
  call test_override("char_avail", 0)
 | 
					  call Ntest_override("char_avail", 0)
 | 
				
			||||||
  bw!
 | 
					  bw!
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -884,10 +873,9 @@ func Test_search_cmdline_incsearch_highlight_attr()
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_incsearch_cmdline_modifier()
 | 
					func Test_incsearch_cmdline_modifier()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['foo'])
 | 
					  call setline(1, ['foo'])
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
@@ -1011,10 +999,9 @@ func Test_hlsearch_block_visual_match()
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_incsearch_substitute()
 | 
					func Test_incsearch_substitute()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
  for n in range(1, 10)
 | 
					  for n in range(1, 10)
 | 
				
			||||||
@@ -1032,9 +1019,8 @@ func Test_incsearch_substitute()
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_incsearch_substitute_long_line()
 | 
					func Test_incsearch_substitute_long_line()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  call repeat('x', 100000)->setline(1)
 | 
					  call repeat('x', 100000)->setline(1)
 | 
				
			||||||
@@ -1313,13 +1299,12 @@ func Test_incsearch_vimgrep_dump()
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_keep_last_search_pattern()
 | 
					func Test_keep_last_search_pattern()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['foo', 'foo', 'foo'])
 | 
					  call setline(1, ['foo', 'foo', 'foo'])
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  let @/ = 'bar'
 | 
					  let @/ = 'bar'
 | 
				
			||||||
  call feedkeys(":/foo/s//\<Esc>", 'ntx')
 | 
					  call feedkeys(":/foo/s//\<Esc>", 'ntx')
 | 
				
			||||||
  call assert_equal('bar', @/)
 | 
					  call assert_equal('bar', @/)
 | 
				
			||||||
@@ -1329,18 +1314,17 @@ func Test_keep_last_search_pattern()
 | 
				
			|||||||
  call assert_equal('bar', @/)
 | 
					  call assert_equal('bar', @/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bwipe!
 | 
					  bwipe!
 | 
				
			||||||
  call test_override("ALL", 0)
 | 
					  call Ntest_override("ALL", 0)
 | 
				
			||||||
  set noincsearch
 | 
					  set noincsearch
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_word_under_cursor_after_match()
 | 
					func Test_word_under_cursor_after_match()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, 'foo bar')
 | 
					  call setline(1, 'foo bar')
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  try
 | 
					  try
 | 
				
			||||||
    call feedkeys("/foo\<C-R>\<C-W>\<CR>", 'ntx')
 | 
					    call feedkeys("/foo\<C-R>\<C-W>\<CR>", 'ntx')
 | 
				
			||||||
  catch /E486:/
 | 
					  catch /E486:/
 | 
				
			||||||
@@ -1348,24 +1332,23 @@ func Test_word_under_cursor_after_match()
 | 
				
			|||||||
  call assert_equal('foobar', @/)
 | 
					  call assert_equal('foobar', @/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bwipe!
 | 
					  bwipe!
 | 
				
			||||||
  call test_override("ALL", 0)
 | 
					  call Ntest_override("ALL", 0)
 | 
				
			||||||
  set noincsearch
 | 
					  set noincsearch
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_subst_word_under_cursor()
 | 
					func Test_subst_word_under_cursor()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['int SomeLongName;', 'for (xxx = 1; xxx < len; ++xxx)'])
 | 
					  call setline(1, ['int SomeLongName;', 'for (xxx = 1; xxx < len; ++xxx)'])
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
  call test_override("char_avail", 1)
 | 
					  call Ntest_override("char_avail", 1)
 | 
				
			||||||
  call feedkeys("/LongName\<CR>", 'ntx')
 | 
					  call feedkeys("/LongName\<CR>", 'ntx')
 | 
				
			||||||
  call feedkeys(":%s/xxx/\<C-R>\<C-W>/g\<CR>", 'ntx')
 | 
					  call feedkeys(":%s/xxx/\<C-R>\<C-W>/g\<CR>", 'ntx')
 | 
				
			||||||
  call assert_equal('for (SomeLongName = 1; SomeLongName < len; ++SomeLongName)', getline(2))
 | 
					  call assert_equal('for (SomeLongName = 1; SomeLongName < len; ++SomeLongName)', getline(2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bwipe!
 | 
					  bwipe!
 | 
				
			||||||
  call test_override("ALL", 0)
 | 
					  call Ntest_override("ALL", 0)
 | 
				
			||||||
  set noincsearch
 | 
					  set noincsearch
 | 
				
			||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1517,17 +1500,16 @@ func Test_one_error_msg()
 | 
				
			|||||||
endfunc
 | 
					endfunc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Test_incsearch_add_char_under_cursor()
 | 
					func Test_incsearch_add_char_under_cursor()
 | 
				
			||||||
  CheckFunction test_override
 | 
					 | 
				
			||||||
  CheckOption incsearch
 | 
					  CheckOption incsearch
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set incsearch
 | 
					  set incsearch
 | 
				
			||||||
  new
 | 
					  new
 | 
				
			||||||
  call setline(1, ['find match', 'anything'])
 | 
					  call setline(1, ['find match', 'anything'])
 | 
				
			||||||
  1
 | 
					  1
 | 
				
			||||||
  call test_override('char_avail', 1)
 | 
					  call Ntest_override('char_avail', 1)
 | 
				
			||||||
  call feedkeys("fc/m\<C-L>\<C-L>\<C-L>\<C-L>\<C-L>\<CR>", 'tx')
 | 
					  call feedkeys("fc/m\<C-L>\<C-L>\<C-L>\<C-L>\<C-L>\<CR>", 'tx')
 | 
				
			||||||
  call assert_equal('match', @/)
 | 
					  call assert_equal('match', @/)
 | 
				
			||||||
  call test_override('char_avail', 0)
 | 
					  call Ntest_override('char_avail', 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set incsearch&
 | 
					  set incsearch&
 | 
				
			||||||
  bwipe!
 | 
					  bwipe!
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user