diff options
Diffstat (limited to 'test/functional/treesitter/language_spec.lua')
-rw-r--r-- | test/functional/treesitter/language_spec.lua | 88 |
1 files changed, 54 insertions, 34 deletions
diff --git a/test/functional/treesitter/language_spec.lua b/test/functional/treesitter/language_spec.lua index 9b871a72fb..65d9e0e81c 100644 --- a/test/functional/treesitter/language_spec.lua +++ b/test/functional/treesitter/language_spec.lua @@ -13,27 +13,43 @@ before_each(clear) describe('treesitter language API', function() -- error tests not requiring a parser library it('handles missing language', function() - eq(".../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers", - pcall_err(exec_lua, "parser = vim.treesitter.get_parser(0, 'borklang')")) + eq( + ".../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers", + pcall_err(exec_lua, "parser = vim.treesitter.get_parser(0, 'borklang')") + ) -- actual message depends on platform - matches("Failed to load parser for language 'borklang': uv_dlopen: .+", - pcall_err(exec_lua, "parser = vim.treesitter.language.add('borklang', { path = 'borkbork.so' })")) + matches( + "Failed to load parser for language 'borklang': uv_dlopen: .+", + pcall_err( + exec_lua, + "parser = vim.treesitter.language.add('borklang', { path = 'borkbork.so' })" + ) + ) eq(false, exec_lua("return pcall(vim.treesitter.language.add, 'borklang')")) - eq(false, exec_lua("return pcall(vim.treesitter.language.add, 'borklang', { path = 'borkbork.so' })")) + eq( + false, + exec_lua("return pcall(vim.treesitter.language.add, 'borklang', { path = 'borkbork.so' })") + ) - eq(".../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers", - pcall_err(exec_lua, "parser = vim.treesitter.language.inspect('borklang')")) + eq( + ".../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers", + pcall_err(exec_lua, "parser = vim.treesitter.language.inspect('borklang')") + ) - matches("Failed to load parser: uv_dlsym: .+", - pcall_err(exec_lua, 'vim.treesitter.language.add("c", { symbol_name = "borklang" })')) + matches( + 'Failed to load parser: uv_dlsym: .+', + pcall_err(exec_lua, 'vim.treesitter.language.add("c", { symbol_name = "borklang" })') + ) end) it('shows error for invalid language name', function() - eq(".../language.lua:0: '/foo/' is not a valid language name", - pcall_err(exec_lua, 'vim.treesitter.language.add("/foo/")')) + eq( + ".../language.lua:0: '/foo/' is not a valid language name", + pcall_err(exec_lua, 'vim.treesitter.language.add("/foo/")') + ) end) it('inspects language', function() @@ -52,40 +68,45 @@ describe('treesitter language API', function() return {keys, lang.fields, symbols} ]])) - eq({fields=true, symbols=true, _abi_version=true}, keys) + eq({ fields = true, symbols = true, _abi_version = true }, keys) local fset = {} - for _,f in pairs(fields) do - eq("string", type(f)) + for _, f in pairs(fields) do + eq('string', type(f)) fset[f] = true end - eq(true, fset["directive"]) - eq(true, fset["initializer"]) + eq(true, fset['directive']) + eq(true, fset['initializer']) local has_named, has_anonymous - for _,s in pairs(symbols) do - eq("string", type(s[1])) - eq("boolean", type(s[2])) - if s[1] == "for_statement" and s[2] == true then + for _, s in pairs(symbols) do + eq('string', type(s[1])) + eq('boolean', type(s[2])) + if s[1] == 'for_statement' and s[2] == true then has_named = true - elseif s[1] == "|=" and s[2] == false then + elseif s[1] == '|=' and s[2] == false then has_anonymous = true end end - eq({true,true}, {has_named,has_anonymous}) + eq({ true, true }, { has_named, has_anonymous }) end) - it('checks if vim.treesitter.get_parser tries to create a new parser on filetype change', function () - command("set filetype=c") - -- Should not throw an error when filetype is c - eq('c', exec_lua("return vim.treesitter.get_parser(0):lang()")) - command("set filetype=borklang") - -- Should throw an error when filetype changes to borklang - eq(".../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers", - pcall_err(exec_lua, "new_parser = vim.treesitter.get_parser(0, 'borklang')")) - end) + it( + 'checks if vim.treesitter.get_parser tries to create a new parser on filetype change', + function() + command('set filetype=c') + -- Should not throw an error when filetype is c + eq('c', exec_lua('return vim.treesitter.get_parser(0):lang()')) + command('set filetype=borklang') + -- Should throw an error when filetype changes to borklang + eq( + ".../language.lua:0: no parser for 'borklang' language, see :help treesitter-parsers", + pcall_err(exec_lua, "new_parser = vim.treesitter.get_parser(0, 'borklang')") + ) + end + ) - it('retrieve the tree given a range', function () + it('retrieve the tree given a range', function() insert([[ int main() { int x = 3; @@ -99,7 +120,7 @@ describe('treesitter language API', function() eq('<node translation_unit>', exec_lua('return tostring(tree:root())')) end) - it('retrieve the node given a range', function () + it('retrieve the node given a range', function() insert([[ int main() { int x = 3; @@ -113,4 +134,3 @@ describe('treesitter language API', function() eq('<node primitive_type>', exec_lua('return tostring(node)')) end) end) - |