mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	Specifically, functions that are run in the context of the test runner are put in module `test/testutil.lua` while the functions that are run in the context of the test session are put in `test/functional/testnvim.lua`. Closes https://github.com/neovim/neovim/issues/27004.
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
local t = require('test.testutil')
 | 
						|
local n = require('test.functional.testnvim')()
 | 
						|
 | 
						|
local clear = n.clear
 | 
						|
local command = n.command
 | 
						|
local eq = t.eq
 | 
						|
local eval = n.eval
 | 
						|
local feed = n.feed
 | 
						|
local write_file = t.write_file
 | 
						|
 | 
						|
describe('ccomplete#Complete', function()
 | 
						|
  setup(function()
 | 
						|
    -- Realistic tags generated from neovim source tree using `ctags -R *`
 | 
						|
    write_file(
 | 
						|
      'Xtags',
 | 
						|
      [[
 | 
						|
augroup_del	src/nvim/autocmd.c	/^void augroup_del(char *name, bool stupid_legacy_mode)$/;"	f	typeref:typename:void
 | 
						|
augroup_exists	src/nvim/autocmd.c	/^bool augroup_exists(const char *name)$/;"	f	typeref:typename:bool
 | 
						|
augroup_find	src/nvim/autocmd.c	/^int augroup_find(const char *name)$/;"	f	typeref:typename:int
 | 
						|
aupat_get_buflocal_nr	src/nvim/autocmd.c	/^int aupat_get_buflocal_nr(char *pat, int patlen)$/;"	f	typeref:typename:int
 | 
						|
aupat_is_buflocal	src/nvim/autocmd.c	/^bool aupat_is_buflocal(char *pat, int patlen)$/;"	f	typeref:typename:bool
 | 
						|
expand_get_augroup_name	src/nvim/autocmd.c	/^char *expand_get_augroup_name(expand_T *xp, int idx)$/;"	f	typeref:typename:char *
 | 
						|
expand_get_event_name	src/nvim/autocmd.c	/^char *expand_get_event_name(expand_T *xp, int idx)$/;"	f	typeref:typename:char *
 | 
						|
]]
 | 
						|
    )
 | 
						|
  end)
 | 
						|
 | 
						|
  before_each(function()
 | 
						|
    clear()
 | 
						|
    command('set tags=Xtags')
 | 
						|
  end)
 | 
						|
 | 
						|
  teardown(function()
 | 
						|
    os.remove('Xtags')
 | 
						|
  end)
 | 
						|
 | 
						|
  it('can complete from Xtags', function()
 | 
						|
    local completed = eval('ccomplete#Complete(0, "a")')
 | 
						|
    eq(5, #completed)
 | 
						|
    eq('augroup_del(', completed[1].word)
 | 
						|
    eq('f', completed[1].kind)
 | 
						|
 | 
						|
    local aupat = eval('ccomplete#Complete(0, "aupat")')
 | 
						|
    eq(2, #aupat)
 | 
						|
    eq('aupat_get_buflocal_nr(', aupat[1].word)
 | 
						|
    eq('f', aupat[1].kind)
 | 
						|
  end)
 | 
						|
 | 
						|
  it('does not error when returning no matches', function()
 | 
						|
    local completed = eval('ccomplete#Complete(0, "doesnotmatch")')
 | 
						|
    eq({}, completed)
 | 
						|
  end)
 | 
						|
 | 
						|
  it('can find the beginning of a word for C', function()
 | 
						|
    command('set filetype=c')
 | 
						|
    feed('i  int something = augroup')
 | 
						|
    local result = eval('ccomplete#Complete(1, "")')
 | 
						|
    eq(#'  int something = ', result)
 | 
						|
 | 
						|
    local completed = eval('ccomplete#Complete(0, "augroup")')
 | 
						|
    eq(3, #completed)
 | 
						|
  end)
 | 
						|
end)
 |