mirror of
https://github.com/neovim/neovim.git
synced 2024-12-22 20:25:16 -07:00
177 lines
3.6 KiB
Lua
177 lines
3.6 KiB
Lua
|
local helpers = require('test.functional.helpers')(after_each)
|
||
|
|
||
|
local eq = helpers.eq
|
||
|
local clear = helpers.clear
|
||
|
local funcs = helpers.funcs
|
||
|
local dedent = helpers.dedent
|
||
|
local redir_exec = helpers.redir_exec
|
||
|
|
||
|
before_each(clear)
|
||
|
|
||
|
local function check_nofunc(fname)
|
||
|
eq(0, funcs.exists('*' .. fname))
|
||
|
end
|
||
|
|
||
|
local function check_func(fname, body)
|
||
|
if type(body) == 'number' then
|
||
|
body = ('return %i'):format(body)
|
||
|
end
|
||
|
eq(dedent(([[
|
||
|
|
||
|
function %s()%s
|
||
|
endfunction]]
|
||
|
), 3):format(fname, body and ('\n1 ' .. body) or ''),
|
||
|
redir_exec('function ' .. fname))
|
||
|
end
|
||
|
|
||
|
describe(':endfunction', function()
|
||
|
it('accepts bang', function()
|
||
|
eq('', redir_exec([[
|
||
|
function F()
|
||
|
endfunction!
|
||
|
]]))
|
||
|
check_func('F')
|
||
|
eq('', redir_exec([[
|
||
|
function! F()
|
||
|
return 1
|
||
|
endfunction!
|
||
|
]]))
|
||
|
check_func('F', 1)
|
||
|
end)
|
||
|
it('accepts comments', function()
|
||
|
eq('', redir_exec([[
|
||
|
function F1()
|
||
|
endfunction " Comment
|
||
|
]]))
|
||
|
check_func('F1')
|
||
|
eq('', redir_exec([[
|
||
|
function F2()
|
||
|
endfunction " }}}
|
||
|
]]))
|
||
|
check_func('F2')
|
||
|
eq('', redir_exec([[
|
||
|
function F3()
|
||
|
endfunction " F3
|
||
|
]]))
|
||
|
check_func('F3')
|
||
|
eq('', redir_exec([[
|
||
|
function F4()
|
||
|
endfunction! " F4
|
||
|
]]))
|
||
|
check_func('F4')
|
||
|
eq('', redir_exec([[
|
||
|
function! F4()
|
||
|
return 2
|
||
|
endfunction! " F4
|
||
|
]]))
|
||
|
check_func('F4', 2)
|
||
|
end)
|
||
|
it('accepts function name', function()
|
||
|
eq('', redir_exec([[
|
||
|
function F0()
|
||
|
endfunction F0
|
||
|
]]))
|
||
|
check_func('F0')
|
||
|
eq('', redir_exec([[
|
||
|
function F1()
|
||
|
endfunction! F1
|
||
|
]]))
|
||
|
check_func('F1')
|
||
|
eq('', redir_exec([[
|
||
|
function! F2()
|
||
|
endfunction! F2
|
||
|
]]))
|
||
|
check_func('F2')
|
||
|
eq('', redir_exec([[
|
||
|
function! F2()
|
||
|
return 3
|
||
|
endfunction! F2
|
||
|
]]))
|
||
|
check_func('F2', 3)
|
||
|
end)
|
||
|
it('accepts weird characters', function()
|
||
|
eq('', redir_exec([[
|
||
|
function F1()
|
||
|
endfunction: }}}
|
||
|
]]))
|
||
|
check_func('F1')
|
||
|
-- From accurev
|
||
|
eq('', redir_exec([[
|
||
|
function F2()
|
||
|
endfunction :}}}
|
||
|
]]))
|
||
|
check_func('F2')
|
||
|
-- From cream-vimabbrev
|
||
|
eq('', redir_exec([[
|
||
|
function F3()
|
||
|
endfunction 1}}}
|
||
|
]]))
|
||
|
check_func('F3')
|
||
|
-- From pyunit
|
||
|
eq('', redir_exec([[
|
||
|
function F4()
|
||
|
endfunction # }}}
|
||
|
]]))
|
||
|
check_func('F4')
|
||
|
-- From vim-lldb
|
||
|
eq('', redir_exec([[
|
||
|
function F5()
|
||
|
endfunction()
|
||
|
]]))
|
||
|
check_func('F5')
|
||
|
-- From vim-mail
|
||
|
eq('', redir_exec([[
|
||
|
function F6()
|
||
|
endfunction;
|
||
|
]]))
|
||
|
check_func('F6')
|
||
|
end)
|
||
|
it('accepts commented bar', function()
|
||
|
eq('', redir_exec([[
|
||
|
function F1()
|
||
|
endfunction " F1 | echo 42
|
||
|
]]))
|
||
|
check_func('F1')
|
||
|
eq('', redir_exec([[
|
||
|
function! F1()
|
||
|
return 42
|
||
|
endfunction! " F1 | echo 42
|
||
|
]]))
|
||
|
check_func('F1', 42)
|
||
|
end)
|
||
|
it('errors out on an uncommented bar', function()
|
||
|
eq('\nE488: Trailing characters: | echo 42', redir_exec([[
|
||
|
function F1()
|
||
|
endfunction | echo 42
|
||
|
]]))
|
||
|
check_nofunc('F1')
|
||
|
end)
|
||
|
it('allows running multiple commands', function()
|
||
|
eq('\n2', redir_exec([[
|
||
|
function F1()
|
||
|
echo 2
|
||
|
endfunction
|
||
|
call F1()
|
||
|
]]))
|
||
|
check_func('F1', 'echo 2')
|
||
|
eq('\n2\n3\n4', redir_exec([[
|
||
|
function F2()
|
||
|
echo 2
|
||
|
endfunction F2
|
||
|
function F3()
|
||
|
echo 3
|
||
|
endfunction " F3
|
||
|
function! F4()
|
||
|
echo 4
|
||
|
endfunction!
|
||
|
call F2()
|
||
|
call F3()
|
||
|
call F4()
|
||
|
]]))
|
||
|
check_func('F2', 'echo 2')
|
||
|
check_func('F3', 'echo 3')
|
||
|
check_func('F4', 'echo 4')
|
||
|
end)
|
||
|
end)
|
||
|
-- vim: foldmarker=▶,▲
|