aboutsummaryrefslogtreecommitdiff
path: root/test/functional/treesitter/node_spec.lua
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2024-07-29 11:20:15 +0100
committerLewis Russell <me@lewisr.dev>2024-08-02 19:04:37 +0100
commit7d24c4d6b0413cd5af8d0579f0a9a694db7f775e (patch)
treed9954c2001fe512c60a76561e7a19566b9de638b /test/functional/treesitter/node_spec.lua
parentf32557ca679cbb1d7de52ab54dc35585af9ab9d0 (diff)
downloadrneovim-7d24c4d6b0413cd5af8d0579f0a9a694db7f775e.tar.gz
rneovim-7d24c4d6b0413cd5af8d0579f0a9a694db7f775e.tar.bz2
rneovim-7d24c4d6b0413cd5af8d0579f0a9a694db7f775e.zip
test: allow exec_lua to handle functions
Problem: Tests have lots of exec_lua calls which input blocks of code provided as unformatted strings. Solution: Teach exec_lua how to handle functions.
Diffstat (limited to 'test/functional/treesitter/node_spec.lua')
-rw-r--r--test/functional/treesitter/node_spec.lua86
1 files changed, 43 insertions, 43 deletions
diff --git a/test/functional/treesitter/node_spec.lua b/test/functional/treesitter/node_spec.lua
index 6270ea3aa1..0e77c10e16 100644
--- a/test/functional/treesitter/node_spec.lua
+++ b/test/functional/treesitter/node_spec.lua
@@ -18,39 +18,39 @@ describe('treesitter node API', function()
it('double free tree', function()
insert('F')
- exec_lua([[
+ exec_lua(function()
vim.treesitter.start(0, 'lua')
vim.treesitter.get_node():tree()
vim.treesitter.get_node():tree()
collectgarbage()
- ]])
+ end)
assert_alive()
end)
it('double free tree 2', function()
- exec_lua([[
- parser = vim.treesitter.get_parser(0, "c")
+ exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c')
local x = parser:parse()[1]:root():tree()
- vim.api.nvim_buf_set_text(0, 0,0, 0,0, {'y'})
+ vim.api.nvim_buf_set_text(0, 0, 0, 0, 0, { 'y' })
parser:parse()
- vim.api.nvim_buf_set_text(0, 0,0, 0,1, {'z'})
+ vim.api.nvim_buf_set_text(0, 0, 0, 0, 1, { 'z' })
parser:parse()
collectgarbage()
x:root()
- ]])
+ end)
assert_alive()
end)
it('get_node() with lang given', function()
-- this buffer doesn't have filetype set!
insert('local foo = function() end')
- exec_lua([[
- node = vim.treesitter.get_node({
+ exec_lua(function()
+ _G.node = vim.treesitter.get_node({
bufnr = 0,
- pos = { 0, 6 }, -- on "foo"
+ pos = { 0, 6 }, -- on "foo"
lang = 'lua',
})
- ]])
+ end)
eq('foo', lua_eval('vim.treesitter.get_node_text(node, 0)'))
eq('identifier', lua_eval('node:type()'))
end)
@@ -79,16 +79,16 @@ describe('treesitter node API', function()
}
]])
- exec_lua([[
- parser = vim.treesitter.get_parser(0, "c")
- tree = parser:parse()[1]
- root = tree:root()
- lang = vim.treesitter.language.inspect('c')
+ exec_lua(function()
+ local parser = vim.treesitter.get_parser(0, 'c')
+ local tree = parser:parse()[1]
+ _G.root = tree:root()
+ vim.treesitter.language.inspect('c')
- function node_text(node)
+ function _G.node_text(node)
return vim.treesitter.get_node_text(node, 0)
end
- ]])
+ end)
exec_lua 'node = root:descendant_for_range(0, 11, 0, 16)'
eq('int x', lua_eval('node_text(node)'))
@@ -118,13 +118,13 @@ describe('treesitter node API', function()
int x = 3;
}]])
- local len = exec_lua([[
- tree = vim.treesitter.get_parser(0, "c"):parse()[1]
- node = tree:root():child(0)
- children = node:named_children()
+ local len = exec_lua(function()
+ local tree = vim.treesitter.get_parser(0, 'c'):parse()[1]
+ local node = tree:root():child(0)
+ _G.children = node:named_children()
- return #children
- ]])
+ return #_G.children
+ end)
eq(3, len)
eq('<node compound_statement>', lua_eval('tostring(children[3])'))
@@ -136,11 +136,11 @@ describe('treesitter node API', function()
int x = 3;
}]])
- exec_lua([[
- tree = vim.treesitter.get_parser(0, "c"):parse()[1]
- root = tree:root()
- node = root:child(0):child(2)
- ]])
+ exec_lua(function()
+ local tree = vim.treesitter.get_parser(0, 'c'):parse()[1]
+ _G.root = tree:root()
+ _G.node = _G.root:child(0):child(2)
+ end)
eq(lua_eval('tostring(root)'), lua_eval('tostring(node:root())'))
end)
@@ -151,11 +151,11 @@ describe('treesitter node API', function()
int x = 3;
}]])
- exec_lua([[
- tree = vim.treesitter.get_parser(0, "c"):parse()[1]
- root = tree:root()
- child = root:child(0):child(0)
- ]])
+ exec_lua(function()
+ local tree = vim.treesitter.get_parser(0, 'c'):parse()[1]
+ _G.root = tree:root()
+ _G.child = _G.root:child(0):child(0)
+ end)
eq(28, lua_eval('root:byte_length()'))
eq(3, lua_eval('child:byte_length()'))
@@ -167,15 +167,15 @@ describe('treesitter node API', function()
int x = 3;
}]])
- exec_lua([[
- tree = vim.treesitter.get_parser(0, "c"):parse()[1]
- root = tree:root()
- main = root:child(0)
- body = main:child(2)
- statement = body:child(1)
- declarator = statement:child(1)
- value = declarator:child(1)
- ]])
+ exec_lua(function()
+ local tree = vim.treesitter.get_parser(0, 'c'):parse()[1]
+ _G.root = tree:root()
+ _G.main = _G.root:child(0)
+ _G.body = _G.main:child(2)
+ _G.statement = _G.body:child(1)
+ _G.declarator = _G.statement:child(1)
+ _G.value = _G.declarator:child(1)
+ end)
eq(lua_eval('main:type()'), lua_eval('root:child_containing_descendant(value):type()'))
eq(lua_eval('body:type()'), lua_eval('main:child_containing_descendant(value):type()'))