diff --git a/.gitmodules b/.gitmodules index 952dfc2..5e38618 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,3 +6,7 @@ path = test/vendor/plenary.nvim url = https://github.com/nvim-lua/plenary.nvim ignore = dirty +[submodule "test/vendor/nvim-treesitter"] + path = test/vendor/nvim-treesitter + url = https://github.com/nvim-treesitter/nvim-treesitter + ignore = dirty diff --git a/test/fixtures/test.go b/test/fixtures/test.go new file mode 100644 index 0000000..a9eb63c --- /dev/null +++ b/test/fixtures/test.go @@ -0,0 +1,10 @@ +package main + +import "fmt" + +import myio "io" + +import ( + "github.com/joho/godotenv" + corev1 "k8s.io/api/core/v1" +) diff --git a/test/spec.vim b/test/spec.vim index d907202..29130c1 100644 --- a/test/spec.vim +++ b/test/spec.vim @@ -1,5 +1,6 @@ set rtp^=test/vendor/plenary.nvim/ set rtp^=test/vendor/matcher_combinators.lua/ +set rtp^=test/vendor/nvim-treesitter/ set rtp^=./ runtime plugin/plenary.vim @@ -11,3 +12,6 @@ lua require('matcher_combinators.luassert') runtime plugin/gx.lua " lua require('gx').setup({ name = 'Jane Doe' }) lua require('gx').setup() + +" needed for go handler testing +lua require('nvim-treesitter.configs').setup({ ensure_installed = { "go" }, sync_install = true }) diff --git a/test/spec/gx/handlers/go_handler_spec.lua b/test/spec/gx/handlers/go_handler_spec.lua new file mode 100644 index 0000000..186b173 --- /dev/null +++ b/test/spec/gx/handlers/go_handler_spec.lua @@ -0,0 +1,23 @@ +local handler = require("gx.handlers.go") + +describe("go handler works", function() + vim.cmd("edit test/fixtures/test.go") + local function test_line(line, startpos, endpos, expected) + for i = startpos, endpos do + vim.api.nvim_win_set_cursor(0, { line, i }) + assert.equals(expected, handler.handle()) + end + end + it("parses single line imports", function() + test_line(3, 0, 11, "https://pkg.go.dev/fmt") + end) + it("parses single line named imports", function() + test_line(5, 0, 15, "https://pkg.go.dev/io") + end) + it("parses imports in list", function() + test_line(8, 1, 26, "https://pkg.go.dev/github.com/joho/godotenv") + end) + it("parses named imports in list", function() + test_line(9, 1, 27, "https://pkg.go.dev/k8s.io/api/core/v1") + end) +end) diff --git a/test/vendor/nvim-treesitter b/test/vendor/nvim-treesitter new file mode 160000 index 0000000..19f69a5 --- /dev/null +++ b/test/vendor/nvim-treesitter @@ -0,0 +1 @@ +Subproject commit 19f69a5b434470723c32311cdc4d8d0e8db76358