neovim/test/functional/plugin/ccomplete_spec.lua
dundargoc 052498ed42 test: improve test conventions
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.
2024-04-23 18:17:04 +02:00

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)