diff options
Diffstat (limited to 'test/functional/vimscript/ctx_functions_spec.lua')
-rw-r--r-- | test/functional/vimscript/ctx_functions_spec.lua | 246 |
1 files changed, 138 insertions, 108 deletions
diff --git a/test/functional/vimscript/ctx_functions_spec.lua b/test/functional/vimscript/ctx_functions_spec.lua index 17607f0794..dc60a474f3 100644 --- a/test/functional/vimscript/ctx_functions_spec.lua +++ b/test/functional/vimscript/ctx_functions_spec.lua @@ -6,25 +6,24 @@ local command = helpers.command local eq = helpers.eq local eval = helpers.eval local feed = helpers.feed -local map = helpers.tbl_map -local nvim = helpers.nvim +local map = vim.tbl_map +local api = helpers.api local parse_context = helpers.parse_context local exec_capture = helpers.exec_capture local source = helpers.source -local trim = helpers.trim +local trim = vim.trim local write_file = helpers.write_file local pcall_err = helpers.pcall_err describe('context functions', function() local fname1 = 'Xtest-functional-eval-ctx1' local fname2 = 'Xtest-functional-eval-ctx2' - local outofbounds = - 'Vim:E475: Invalid value for argument index: out of bounds' + local outofbounds = 'Vim:E475: Invalid value for argument index: out of bounds' before_each(function() clear() - write_file(fname1, "1\n2\n3") - write_file(fname2, "a\nb\nc") + write_file(fname1, '1\n2\n3') + write_file(fname2, 'a\nb\nc') end) after_each(function() @@ -34,98 +33,125 @@ describe('context functions', function() describe('ctxpush/ctxpop', function() it('saves and restores registers properly', function() - local regs = {'1', '2', '3', 'a'} - local vals = {'1', '2', '3', 'hjkl'} + local regs = { '1', '2', '3', 'a' } + local vals = { '1', '2', '3', 'hjkl' } feed('i1<cr>2<cr>3<c-[>ddddddqahjklq') - eq(vals, map(function(r) return trim(call('getreg', r)) end, regs)) + eq( + vals, + map(function(r) + return trim(call('getreg', r)) + end, regs) + ) call('ctxpush') - call('ctxpush', {'regs'}) - - map(function(r) call('setreg', r, {}) end, regs) - eq({'', '', '', ''}, - map(function(r) return trim(call('getreg', r)) end, regs)) + call('ctxpush', { 'regs' }) + + map(function(r) + call('setreg', r, {}) + end, regs) + eq( + { '', '', '', '' }, + map(function(r) + return trim(call('getreg', r)) + end, regs) + ) call('ctxpop') - eq(vals, map(function(r) return trim(call('getreg', r)) end, regs)) - - map(function(r) call('setreg', r, {}) end, regs) - eq({'', '', '', ''}, - map(function(r) return trim(call('getreg', r)) end, regs)) + eq( + vals, + map(function(r) + return trim(call('getreg', r)) + end, regs) + ) + + map(function(r) + call('setreg', r, {}) + end, regs) + eq( + { '', '', '', '' }, + map(function(r) + return trim(call('getreg', r)) + end, regs) + ) call('ctxpop') - eq(vals, map(function(r) return trim(call('getreg', r)) end, regs)) + eq( + vals, + map(function(r) + return trim(call('getreg', r)) + end, regs) + ) end) it('saves and restores jumplist properly', function() - command('edit '..fname1) + command('edit ' .. fname1) feed('G') feed('gg') - command('edit '..fname2) + command('edit ' .. fname2) local jumplist = call('getjumplist') call('ctxpush') - call('ctxpush', {'jumps'}) + call('ctxpush', { 'jumps' }) command('clearjumps') - eq({{}, 0}, call('getjumplist')) + eq({ {}, 0 }, call('getjumplist')) call('ctxpop') eq(jumplist, call('getjumplist')) command('clearjumps') - eq({{}, 0}, call('getjumplist')) + eq({ {}, 0 }, call('getjumplist')) call('ctxpop') eq(jumplist, call('getjumplist')) end) it('saves and restores buffer list properly', function() - command('edit '..fname1) - command('edit '..fname2) + command('edit ' .. fname1) + command('edit ' .. fname2) command('edit TEST') local bufs = call('map', call('getbufinfo'), 'v:val.name') call('ctxpush') - call('ctxpush', {'bufs'}) + call('ctxpush', { 'bufs' }) command('%bwipeout') - eq({''}, call('map', call('getbufinfo'), 'v:val.name')) + eq({ '' }, call('map', call('getbufinfo'), 'v:val.name')) call('ctxpop') - eq({'', unpack(bufs)}, call('map', call('getbufinfo'), 'v:val.name')) + eq({ '', unpack(bufs) }, call('map', call('getbufinfo'), 'v:val.name')) command('%bwipeout') - eq({''}, call('map', call('getbufinfo'), 'v:val.name')) + eq({ '' }, call('map', call('getbufinfo'), 'v:val.name')) call('ctxpop') - eq({'', unpack(bufs)}, call('map', call('getbufinfo'), 'v:val.name')) + eq({ '', unpack(bufs) }, call('map', call('getbufinfo'), 'v:val.name')) end) it('saves and restores global variables properly', function() - nvim('set_var', 'one', 1) - nvim('set_var', 'Two', 2) - nvim('set_var', 'THREE', 3) - eq({1, 2 ,3}, eval('[g:one, g:Two, g:THREE]')) + api.nvim_set_var('one', 1) + api.nvim_set_var('Two', 2) + api.nvim_set_var('THREE', 3) + eq({ 1, 2, 3 }, eval('[g:one, g:Two, g:THREE]')) call('ctxpush') - call('ctxpush', {'gvars'}) + call('ctxpush', { 'gvars' }) - nvim('del_var', 'one') - nvim('del_var', 'Two') - nvim('del_var', 'THREE') + api.nvim_del_var('one') + api.nvim_del_var('Two') + api.nvim_del_var('THREE') eq('Vim:E121: Undefined variable: g:one', pcall_err(eval, 'g:one')) eq('Vim:E121: Undefined variable: g:Two', pcall_err(eval, 'g:Two')) eq('Vim:E121: Undefined variable: g:THREE', pcall_err(eval, 'g:THREE')) call('ctxpop') - eq({1, 2 ,3}, eval('[g:one, g:Two, g:THREE]')) + eq({ 1, 2, 3 }, eval('[g:one, g:Two, g:THREE]')) - nvim('del_var', 'one') - nvim('del_var', 'Two') - nvim('del_var', 'THREE') + api.nvim_del_var('one') + api.nvim_del_var('Two') + api.nvim_del_var('THREE') eq('Vim:E121: Undefined variable: g:one', pcall_err(eval, 'g:one')) eq('Vim:E121: Undefined variable: g:Two', pcall_err(eval, 'g:Two')) eq('Vim:E121: Undefined variable: g:THREE', pcall_err(eval, 'g:THREE')) call('ctxpop') - eq({1, 2 ,3}, eval('[g:one, g:Two, g:THREE]')) + eq({ 1, 2, 3 }, eval('[g:one, g:Two, g:THREE]')) end) it('saves and restores script functions properly', function() @@ -164,28 +190,30 @@ describe('context functions', function() ]]) eq('Hello, World!', exec_capture([[call Greet('World')]])) - eq('Hello, World!'.. - '\nHello, One!'.. - '\nHello, Two!'.. - '\nHello, Three!', - exec_capture([[call GreetAll('World', 'One', 'Two', 'Three')]])) + eq( + 'Hello, World!' .. '\nHello, One!' .. '\nHello, Two!' .. '\nHello, Three!', + exec_capture([[call GreetAll('World', 'One', 'Two', 'Three')]]) + ) call('SaveSFuncs') call('DeleteSFuncs') - eq('function Greet, line 1: Vim(call):E117: Unknown function: s:greet', - pcall_err(command, [[call Greet('World')]])) - eq('function GreetAll, line 1: Vim(call):E117: Unknown function: s:greet_all', - pcall_err(command, [[call GreetAll('World', 'One', 'Two', 'Three')]])) + eq( + 'function Greet, line 1: Vim(call):E117: Unknown function: s:greet', + pcall_err(command, [[call Greet('World')]]) + ) + eq( + 'function GreetAll, line 1: Vim(call):E117: Unknown function: s:greet_all', + pcall_err(command, [[call GreetAll('World', 'One', 'Two', 'Three')]]) + ) call('RestoreFuncs') eq('Hello, World!', exec_capture([[call Greet('World')]])) - eq('Hello, World!'.. - '\nHello, One!'.. - '\nHello, Two!'.. - '\nHello, Three!', - exec_capture([[call GreetAll('World', 'One', 'Two', 'Three')]])) + eq( + 'Hello, World!' .. '\nHello, One!' .. '\nHello, Two!' .. '\nHello, Three!', + exec_capture([[call GreetAll('World', 'One', 'Two', 'Three')]]) + ) end) it('saves and restores functions properly', function() @@ -203,28 +231,28 @@ describe('context functions', function() ]]) eq('Hello, World!', exec_capture([[call Greet('World')]])) - eq('Hello, World!'.. - '\nHello, One!'.. - '\nHello, Two!'.. - '\nHello, Three!', - exec_capture([[call GreetAll('World', 'One', 'Two', 'Three')]])) + eq( + 'Hello, World!' .. '\nHello, One!' .. '\nHello, Two!' .. '\nHello, Three!', + exec_capture([[call GreetAll('World', 'One', 'Two', 'Three')]]) + ) - call('ctxpush', {'funcs'}) + call('ctxpush', { 'funcs' }) command('delfunction Greet') command('delfunction GreetAll') eq('Vim:E117: Unknown function: Greet', pcall_err(call, 'Greet', 'World')) - eq('Vim:E117: Unknown function: GreetAll', - pcall_err(call, 'GreetAll', 'World', 'One', 'Two', 'Three')) + eq( + 'Vim:E117: Unknown function: GreetAll', + pcall_err(call, 'GreetAll', 'World', 'One', 'Two', 'Three') + ) call('ctxpop') eq('Hello, World!', exec_capture([[call Greet('World')]])) - eq('Hello, World!'.. - '\nHello, One!'.. - '\nHello, Two!'.. - '\nHello, Three!', - exec_capture([[call GreetAll('World', 'One', 'Two', 'Three')]])) + eq( + 'Hello, World!' .. '\nHello, One!' .. '\nHello, Two!' .. '\nHello, Three!', + exec_capture([[call GreetAll('World', 'One', 'Two', 'Three')]]) + ) end) it('errors out when context stack is empty', function() @@ -268,41 +296,41 @@ describe('context functions', function() it('returns context dictionary at index in context stack', function() feed('i1<cr>2<cr>3<c-[>ddddddqahjklq') - command('edit! '..fname1) + command('edit! ' .. fname1) feed('G') feed('gg') - command('edit '..fname2) - nvim('set_var', 'one', 1) - nvim('set_var', 'Two', 2) - nvim('set_var', 'THREE', 3) + command('edit ' .. fname2) + api.nvim_set_var('one', 1) + api.nvim_set_var('Two', 2) + api.nvim_set_var('THREE', 3) local with_regs = { ['regs'] = { - {['rt'] = 1, ['rc'] = {'1'}, ['n'] = 49, ['ru'] = true}, - {['rt'] = 1, ['rc'] = {'2'}, ['n'] = 50}, - {['rt'] = 1, ['rc'] = {'3'}, ['n'] = 51}, - {['rc'] = {'hjkl'}, ['n'] = 97}, - } + { ['rt'] = 1, ['rc'] = { '1' }, ['n'] = 49, ['ru'] = true }, + { ['rt'] = 1, ['rc'] = { '2' }, ['n'] = 50 }, + { ['rt'] = 1, ['rc'] = { '3' }, ['n'] = 51 }, + { ['rc'] = { 'hjkl' }, ['n'] = 97 }, + }, } local with_jumps = { - ['jumps'] = eval(([[ + ['jumps'] = eval((([[ filter(map(add( getjumplist()[0], { 'bufnr': bufnr('%'), 'lnum': getcurpos()[1] }), 'filter( { "f": expand("#".v:val.bufnr.":p"), "l": v:val.lnum }, { k, v -> k != "l" || v != 1 })'), '!empty(v:val.f)') - ]]):gsub('\n', '')) + ]]):gsub('\n', ''))), } local with_bufs = { ['bufs'] = eval([[ filter(map(getbufinfo(), '{ "f": v:val.name }'), '!empty(v:val.f)') - ]]) + ]]), } local with_gvars = { - ['gvars'] = {{'one', 1}, {'Two', 2}, {'THREE', 3}} + ['gvars'] = { { 'one', 1 }, { 'Two', 2 }, { 'THREE', 3 } }, } local with_all = { @@ -316,25 +344,25 @@ describe('context functions', function() eq(with_all, parse_context(call('ctxget'))) eq(with_all, parse_context(call('ctxget', 0))) - call('ctxpush', {'gvars'}) + call('ctxpush', { 'gvars' }) eq(with_gvars, parse_context(call('ctxget'))) eq(with_gvars, parse_context(call('ctxget', 0))) eq(with_all, parse_context(call('ctxget', 1))) - call('ctxpush', {'bufs'}) + call('ctxpush', { 'bufs' }) eq(with_bufs, parse_context(call('ctxget'))) eq(with_bufs, parse_context(call('ctxget', 0))) eq(with_gvars, parse_context(call('ctxget', 1))) eq(with_all, parse_context(call('ctxget', 2))) - call('ctxpush', {'jumps'}) + call('ctxpush', { 'jumps' }) eq(with_jumps, parse_context(call('ctxget'))) eq(with_jumps, parse_context(call('ctxget', 0))) eq(with_bufs, parse_context(call('ctxget', 1))) eq(with_gvars, parse_context(call('ctxget', 2))) eq(with_all, parse_context(call('ctxget', 3))) - call('ctxpush', {'regs'}) + call('ctxpush', { 'regs' }) eq(with_regs, parse_context(call('ctxget'))) eq(with_regs, parse_context(call('ctxget', 0))) eq(with_jumps, parse_context(call('ctxget', 1))) @@ -368,43 +396,45 @@ describe('context functions', function() describe('ctxset()', function() it('errors out when index is out of bounds', function() - eq(outofbounds, pcall_err(call, 'ctxset', {dummy = 1})) + eq(outofbounds, pcall_err(call, 'ctxset', { dummy = 1 })) call('ctxpush') - eq(outofbounds, pcall_err(call, 'ctxset', {dummy = 1}, 1)) + eq(outofbounds, pcall_err(call, 'ctxset', { dummy = 1 }, 1)) call('ctxpop') - eq(outofbounds, pcall_err(call, 'ctxset', {dummy = 1}, 0)) + eq(outofbounds, pcall_err(call, 'ctxset', { dummy = 1 }, 0)) end) it('errors when context dictionary is invalid', function() call('ctxpush') - eq('Vim:E474: Failed to convert list to msgpack string buffer', - pcall_err(call, 'ctxset', { regs = { {} }, jumps = { {} } })) + eq( + 'Vim:E474: Failed to convert list to msgpack string buffer', + pcall_err(call, 'ctxset', { regs = { {} }, jumps = { {} } }) + ) end) it('sets context dictionary at index in context stack', function() - nvim('set_var', 'one', 1) - nvim('set_var', 'Two', 2) - nvim('set_var', 'THREE', 3) + api.nvim_set_var('one', 1) + api.nvim_set_var('Two', 2) + api.nvim_set_var('THREE', 3) call('ctxpush') local ctx1 = call('ctxget') - nvim('set_var', 'one', 'a') - nvim('set_var', 'Two', 'b') - nvim('set_var', 'THREE', 'c') + api.nvim_set_var('one', 'a') + api.nvim_set_var('Two', 'b') + api.nvim_set_var('THREE', 'c') call('ctxpush') call('ctxpush') local ctx2 = call('ctxget') - eq({'a', 'b' ,'c'}, eval('[g:one, g:Two, g:THREE]')) + eq({ 'a', 'b', 'c' }, eval('[g:one, g:Two, g:THREE]')) call('ctxset', ctx1) call('ctxset', ctx2, 2) call('ctxpop') - eq({1, 2 ,3}, eval('[g:one, g:Two, g:THREE]')) + eq({ 1, 2, 3 }, eval('[g:one, g:Two, g:THREE]')) call('ctxpop') - eq({'a', 'b' ,'c'}, eval('[g:one, g:Two, g:THREE]')) - nvim('set_var', 'one', 1.5) - eq({1.5, 'b' ,'c'}, eval('[g:one, g:Two, g:THREE]')) + eq({ 'a', 'b', 'c' }, eval('[g:one, g:Two, g:THREE]')) + api.nvim_set_var('one', 1.5) + eq({ 1.5, 'b', 'c' }, eval('[g:one, g:Two, g:THREE]')) call('ctxpop') - eq({'a', 'b' ,'c'}, eval('[g:one, g:Two, g:THREE]')) + eq({ 'a', 'b', 'c' }, eval('[g:one, g:Two, g:THREE]')) end) end) end) |