diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2019-06-09 13:26:48 +0200 |
---|---|---|
committer | Björn Linse <bjorn.linse@gmail.com> | 2019-09-28 14:55:43 +0200 |
commit | 4ea5e63aa8c866b4fcc9d10f1a26078d2517f96a (patch) | |
tree | 057fc3138c63438b1e945ef8257cfe179803d958 /test/functional/lua/tree_sitter_spec.lua | |
parent | afba23099fccc929fd0319a9a965a7b727407c7a (diff) | |
download | rneovim-4ea5e63aa8c866b4fcc9d10f1a26078d2517f96a.tar.gz rneovim-4ea5e63aa8c866b4fcc9d10f1a26078d2517f96a.tar.bz2 rneovim-4ea5e63aa8c866b4fcc9d10f1a26078d2517f96a.zip |
tree-sitter: add basic testing on ci
build tree-sitter c parser on ci for testing purposes
Diffstat (limited to 'test/functional/lua/tree_sitter_spec.lua')
-rw-r--r-- | test/functional/lua/tree_sitter_spec.lua | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/test/functional/lua/tree_sitter_spec.lua b/test/functional/lua/tree_sitter_spec.lua new file mode 100644 index 0000000000..e25eb47a60 --- /dev/null +++ b/test/functional/lua/tree_sitter_spec.lua @@ -0,0 +1,67 @@ +-- Test suite for testing interactions with API bindings +local helpers = require('test.functional.helpers')(after_each) + +local meths = helpers.meths +local clear = helpers.clear +local eq = helpers.eq +local insert = helpers.insert +local meth_pcall = helpers.meth_pcall +local exec_lua = helpers.exec_lua +local iswin = helpers.iswin + +before_each(clear) + +describe('tree-sitter API', function() + -- error tests not requiring a parser library + it('handles basic errors', function() + --eq({false, 'Error executing lua: vim.schedule: expected function'}, + -- meth_pcall(meths.execute_lua, "parser = vim.tree_sitter.create_parser(0, 'nosuchlang')", {})) + + + + end) + + local ts_path = os.getenv("TREE_SITTER_DIR") + + describe('with C parser', function() + if ts_path == nil then + it("works", function() pending("TREE_SITTER_PATH not set, skipping tree-sitter parser tests") end) + return + end + + before_each(function() + -- TODO the .so/.dylib/.dll thingie + local path = ts_path .. '/bin/c'..(iswin() and '.dll' or '.so') + exec_lua([[ + local path = ... + vim.tree_sitter.add_language(path,'c') + + ]], path) + end) + + it('parses buffer', function() + insert([[ + int main() { + int x = 3; + }]]) + + exec_lua([[ + parser = vim.tree_sitter.create_parser(0, "c") + tree = parser:parse_tree() + root = tree:root() + ]]) + + --eq("<parser>", exec_lua("return tostring(parser)")) + eq("<tree>", exec_lua("return tostring(tree)")) + eq("<node translation_unit>", exec_lua("return tostring(root)")) + eq({0,0,3,0}, exec_lua("return {root:range()}")) + + eq(1, exec_lua("return root:child_count()")) + exec_lua("child = root:child(0)") + eq("<node function_definition>", exec_lua("return tostring(child)")) + eq({0,0,2,1}, exec_lua("return {child:range()}")) + end) + + end) +end) + |