testutil.lua (727B)
1 local n = require('test.functional.testnvim')() 2 3 local exec_lua = n.exec_lua 4 5 local M = {} 6 7 ---@param language string 8 ---@param query_string string 9 function M.run_query(language, query_string) 10 return exec_lua(function(lang, query_str) 11 local query = vim.treesitter.query.parse(lang, query_str) 12 local parser = vim.treesitter.get_parser() 13 local tree = parser:parse()[1] 14 local Range = require('vim.treesitter._range') 15 local res = {} 16 for id, node, metadata in query:iter_captures(tree:root(), 0) do 17 table.insert(res, { 18 query.captures[id], 19 { Range.unpack4(vim.treesitter.get_range(node, 0, metadata[id])) }, 20 }) 21 end 22 return res 23 end, language, query_string) 24 end 25 26 return M