diff options
Diffstat (limited to 'test/functional/lua/api_spec.lua')
-rw-r--r-- | test/functional/lua/api_spec.lua | 114 |
1 files changed, 56 insertions, 58 deletions
diff --git a/test/functional/lua/api_spec.lua b/test/functional/lua/api_spec.lua index d10802440f..acd56a0ddb 100644 --- a/test/functional/lua/api_spec.lua +++ b/test/functional/lua/api_spec.lua @@ -3,7 +3,7 @@ local helpers = require('test.functional.helpers')(after_each) local exc_exec = helpers.exc_exec local remove_trace = helpers.remove_trace -local funcs = helpers.funcs +local fn = helpers.fn local clear = helpers.clear local eval = helpers.eval local NIL = vim.NIL @@ -17,39 +17,39 @@ describe('luaeval(vim.api.…)', function() describe('with channel_id and buffer handle', function() describe('nvim_buf_get_lines', function() it('works', function() - funcs.setline(1, { 'abc', 'def', 'a\nb', 'ttt' }) - eq({ 'a\000b' }, funcs.luaeval('vim.api.nvim_buf_get_lines(1, 2, 3, false)')) + fn.setline(1, { 'abc', 'def', 'a\nb', 'ttt' }) + eq({ 'a\000b' }, fn.luaeval('vim.api.nvim_buf_get_lines(1, 2, 3, false)')) end) end) describe('nvim_buf_set_lines', function() it('works', function() - funcs.setline(1, { 'abc', 'def', 'a\nb', 'ttt' }) - eq(NIL, funcs.luaeval('vim.api.nvim_buf_set_lines(1, 1, 2, false, {"b\\0a"})')) + fn.setline(1, { 'abc', 'def', 'a\nb', 'ttt' }) + eq(NIL, fn.luaeval('vim.api.nvim_buf_set_lines(1, 1, 2, false, {"b\\0a"})')) eq( { 'abc', 'b\000a', 'a\000b', 'ttt' }, - funcs.luaeval('vim.api.nvim_buf_get_lines(1, 0, 4, false)') + fn.luaeval('vim.api.nvim_buf_get_lines(1, 0, 4, false)') ) end) end) end) describe('with errors', function() it('transforms API error from nvim_buf_set_lines into lua error', function() - funcs.setline(1, { 'abc', 'def', 'a\nb', 'ttt' }) + fn.setline(1, { 'abc', 'def', 'a\nb', 'ttt' }) eq( { false, "'replacement string' item contains newlines" }, - funcs.luaeval('{pcall(vim.api.nvim_buf_set_lines, 1, 1, 2, false, {"b\\na"})}') + fn.luaeval('{pcall(vim.api.nvim_buf_set_lines, 1, 1, 2, false, {"b\\na"})}') ) end) it('transforms API error from nvim_win_set_cursor into lua error', function() eq( { false, 'Argument "pos" must be a [row, col] array' }, - funcs.luaeval('{pcall(vim.api.nvim_win_set_cursor, 0, {1, 2, 3})}') + fn.luaeval('{pcall(vim.api.nvim_win_set_cursor, 0, {1, 2, 3})}') ) -- Used to produce a memory leak due to a bug in nvim_win_set_cursor eq( { false, 'Invalid window id: -1' }, - funcs.luaeval('{pcall(vim.api.nvim_win_set_cursor, -1, {1, 2, 3})}') + fn.luaeval('{pcall(vim.api.nvim_win_set_cursor, -1, {1, 2, 3})}') ) end) @@ -58,7 +58,7 @@ describe('luaeval(vim.api.…)', function() function() eq( { false, 'Argument "pos" must be a [row, col] array' }, - funcs.luaeval('{pcall(vim.api.nvim_win_set_cursor, 0, {"b\\na"})}') + fn.luaeval('{pcall(vim.api.nvim_win_set_cursor, 0, {"b\\na"})}') ) end ) @@ -74,20 +74,20 @@ describe('luaeval(vim.api.…)', function() ]=])') ]==])]===]):gsub('\n', ' ') ) - eq(1, funcs.luaeval(str)) + eq(1, fn.luaeval(str)) end) it('correctly converts from API objects', function() - eq(1, funcs.luaeval('vim.api.nvim_eval("1")')) - eq('1', funcs.luaeval([[vim.api.nvim_eval('"1"')]])) - eq('Blobby', funcs.luaeval('vim.api.nvim_eval("0z426c6f626279")')) - eq({}, funcs.luaeval('vim.api.nvim_eval("[]")')) - eq({}, funcs.luaeval('vim.api.nvim_eval("{}")')) - eq(1, funcs.luaeval('vim.api.nvim_eval("1.0")')) - eq('\000', funcs.luaeval('vim.api.nvim_eval("0z00")')) - eq(true, funcs.luaeval('vim.api.nvim_eval("v:true")')) - eq(false, funcs.luaeval('vim.api.nvim_eval("v:false")')) - eq(NIL, funcs.luaeval('vim.api.nvim_eval("v:null")')) + eq(1, fn.luaeval('vim.api.nvim_eval("1")')) + eq('1', fn.luaeval([[vim.api.nvim_eval('"1"')]])) + eq('Blobby', fn.luaeval('vim.api.nvim_eval("0z426c6f626279")')) + eq({}, fn.luaeval('vim.api.nvim_eval("[]")')) + eq({}, fn.luaeval('vim.api.nvim_eval("{}")')) + eq(1, fn.luaeval('vim.api.nvim_eval("1.0")')) + eq('\000', fn.luaeval('vim.api.nvim_eval("0z00")')) + eq(true, fn.luaeval('vim.api.nvim_eval("v:true")')) + eq(false, fn.luaeval('vim.api.nvim_eval("v:false")')) + eq(NIL, fn.luaeval('vim.api.nvim_eval("v:null")')) eq(0, eval([[type(luaeval('vim.api.nvim_eval("1")'))]])) eq(1, eval([[type(luaeval('vim.api.nvim_eval("''1''")'))]])) @@ -99,25 +99,25 @@ describe('luaeval(vim.api.…)', function() eq(6, eval([[type(luaeval('vim.api.nvim_eval("v:false")'))]])) eq(7, eval([[type(luaeval('vim.api.nvim_eval("v:null")'))]])) - eq({ foo = 42 }, funcs.luaeval([[vim.api.nvim_eval('{"foo": 42}')]])) - eq({ 42 }, funcs.luaeval([[vim.api.nvim_eval('[42]')]])) + eq({ foo = 42 }, fn.luaeval([[vim.api.nvim_eval('{"foo": 42}')]])) + eq({ 42 }, fn.luaeval([[vim.api.nvim_eval('[42]')]])) eq( { foo = { bar = 42 }, baz = 50 }, - funcs.luaeval([[vim.api.nvim_eval('{"foo": {"bar": 42}, "baz": 50}')]]) + fn.luaeval([[vim.api.nvim_eval('{"foo": {"bar": 42}, "baz": 50}')]]) ) - eq({ { 42 }, {} }, funcs.luaeval([=[vim.api.nvim_eval('[[42], []]')]=])) + eq({ { 42 }, {} }, fn.luaeval([=[vim.api.nvim_eval('[[42], []]')]=])) end) it('correctly converts to API objects', function() - eq(1, funcs.luaeval('vim.api.nvim__id(1)')) - eq('1', funcs.luaeval('vim.api.nvim__id("1")')) - eq({ 1 }, funcs.luaeval('vim.api.nvim__id({1})')) - eq({ foo = 1 }, funcs.luaeval('vim.api.nvim__id({foo=1})')) - eq(1.5, funcs.luaeval('vim.api.nvim__id(1.5)')) - eq(true, funcs.luaeval('vim.api.nvim__id(true)')) - eq(false, funcs.luaeval('vim.api.nvim__id(false)')) - eq(NIL, funcs.luaeval('vim.api.nvim__id(nil)')) + eq(1, fn.luaeval('vim.api.nvim__id(1)')) + eq('1', fn.luaeval('vim.api.nvim__id("1")')) + eq({ 1 }, fn.luaeval('vim.api.nvim__id({1})')) + eq({ foo = 1 }, fn.luaeval('vim.api.nvim__id({foo=1})')) + eq(1.5, fn.luaeval('vim.api.nvim__id(1.5)')) + eq(true, fn.luaeval('vim.api.nvim__id(true)')) + eq(false, fn.luaeval('vim.api.nvim__id(false)')) + eq(NIL, fn.luaeval('vim.api.nvim__id(nil)')) -- API strings from Blobs can work as NUL-terminated C strings eq( @@ -138,10 +138,10 @@ describe('luaeval(vim.api.…)', function() eq( { foo = 1, bar = { 42, { { baz = true }, 5 } } }, - funcs.luaeval('vim.api.nvim__id({foo=1, bar={42, {{baz=true}, 5}}})') + fn.luaeval('vim.api.nvim__id({foo=1, bar={42, {{baz=true}, 5}}})') ) - eq(true, funcs.luaeval('vim.api.nvim__id(vim.api.nvim__id)(true)')) + eq(true, fn.luaeval('vim.api.nvim__id(vim.api.nvim__id)(true)')) eq( 42, exec_lua [[ @@ -159,30 +159,30 @@ describe('luaeval(vim.api.…)', function() eq(4, eval([[type(luaeval('vim.api.nvim__id({[vim.type_idx]=vim.types.dictionary})'))]])) eq(3, eval([[type(luaeval('vim.api.nvim__id({[vim.type_idx]=vim.types.array})'))]])) - eq({}, funcs.luaeval('vim.api.nvim__id({[vim.type_idx]=vim.types.array})')) + eq({}, fn.luaeval('vim.api.nvim__id({[vim.type_idx]=vim.types.array})')) -- Presence of type_idx makes Vim ignore some keys eq( { 42 }, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id({[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2, [1]=42})' ) ) eq( { foo = 2 }, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id({[vim.type_idx]=vim.types.dictionary, [vim.val_idx]=10, [5]=1, foo=2, [1]=42})' ) ) eq( 10, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id({[vim.type_idx]=vim.types.float, [vim.val_idx]=10, [5]=1, foo=2, [1]=42})' ) ) eq( {}, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id({[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2})' ) ) @@ -191,34 +191,34 @@ describe('luaeval(vim.api.…)', function() it('correctly converts arrays with type_idx to API objects', function() eq(3, eval([[type(luaeval('vim.api.nvim__id_array({[vim.type_idx]=vim.types.array})'))]])) - eq({}, funcs.luaeval('vim.api.nvim__id_array({[vim.type_idx]=vim.types.array})')) + eq({}, fn.luaeval('vim.api.nvim__id_array({[vim.type_idx]=vim.types.array})')) eq( { 42 }, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id_array({[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2, [1]=42})' ) ) eq( { { foo = 2 } }, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id_array({{[vim.type_idx]=vim.types.dictionary, [vim.val_idx]=10, [5]=1, foo=2, [1]=42}})' ) ) eq( { 10 }, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id_array({{[vim.type_idx]=vim.types.float, [vim.val_idx]=10, [5]=1, foo=2, [1]=42}})' ) ) eq( {}, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id_array({[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2})' ) ) - eq({}, funcs.luaeval('vim.api.nvim__id_array({})')) + eq({}, fn.luaeval('vim.api.nvim__id_array({})')) eq(3, eval([[type(luaeval('vim.api.nvim__id_array({})'))]])) end) @@ -228,36 +228,36 @@ describe('luaeval(vim.api.…)', function() eval([[type(luaeval('vim.api.nvim__id_dictionary({[vim.type_idx]=vim.types.dictionary})'))]]) ) - eq({}, funcs.luaeval('vim.api.nvim__id_dictionary({[vim.type_idx]=vim.types.dictionary})')) + eq({}, fn.luaeval('vim.api.nvim__id_dictionary({[vim.type_idx]=vim.types.dictionary})')) eq( { v = { 42 } }, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id_dictionary({v={[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2, [1]=42}})' ) ) eq( { foo = 2 }, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id_dictionary({[vim.type_idx]=vim.types.dictionary, [vim.val_idx]=10, [5]=1, foo=2, [1]=42})' ) ) eq( { v = 10 }, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id_dictionary({v={[vim.type_idx]=vim.types.float, [vim.val_idx]=10, [5]=1, foo=2, [1]=42}})' ) ) eq( { v = {} }, - funcs.luaeval( + fn.luaeval( 'vim.api.nvim__id_dictionary({v={[vim.type_idx]=vim.types.array, [vim.val_idx]=10, [5]=1, foo=2}})' ) ) -- If API requests dictionary, then empty table will be the one. This is not -- the case normally because empty table is an empty array. - eq({}, funcs.luaeval('vim.api.nvim__id_dictionary({})')) + eq({}, fn.luaeval('vim.api.nvim__id_dictionary({})')) eq(4, eval([[type(luaeval('vim.api.nvim__id_dictionary({})'))]])) end) @@ -384,13 +384,11 @@ describe('luaeval(vim.api.…)', function() end) it('accepts any value as API Boolean', function() - eq('', funcs.luaeval('vim.api.nvim_replace_termcodes("", vim, false, nil)')) - eq('', funcs.luaeval('vim.api.nvim_replace_termcodes("", 0, 1.5, "test")')) + eq('', fn.luaeval('vim.api.nvim_replace_termcodes("", vim, false, nil)')) + eq('', fn.luaeval('vim.api.nvim_replace_termcodes("", 0, 1.5, "test")')) eq( '', - funcs.luaeval( - 'vim.api.nvim_replace_termcodes("", true, {}, {[vim.type_idx]=vim.types.array})' - ) + fn.luaeval('vim.api.nvim_replace_termcodes("", true, {}, {[vim.type_idx]=vim.types.array})') ) end) |