docs(gotests): add docs

This commit is contained in:
Smirnov Oleksandr 2024-04-02 17:38:21 +03:00
parent de17bcac04
commit 3f07f03117
4 changed files with 94 additions and 21 deletions

View file

@ -64,24 +64,6 @@ require("gopher").setup {
} }
``` ```
<details>
<summary>
For named tests to work you have to install gotests from develop branch. Next code snippets could be placed into the build step in the Lazy plugin declaration
</summary>
```lua
-- using mason-tool-installer
require("mason-tool-installer").setup {
ensure_installed = {
{ "gotests", version = "develop" },
}
}
-- using `vim.fn.jobstart`
vim.fn.jobstart("go install github.com/cweill/gotests/...@develop")
```
</details>
## Features ## Features
<!-- markdownlint-disable --> <!-- markdownlint-disable -->
@ -148,6 +130,8 @@ require("gopher").setup {
require("gopher").test.exported() require("gopher").test.exported()
require("gopher").test.all() require("gopher").test.all()
``` ```
For named tests see `:h gopher.nvim-gotests-named`
</details> </details>
<details> <details>

View file

@ -13,6 +13,7 @@ Table of Contents
Configuration...........................................|gopher.nvim-config| Configuration...........................................|gopher.nvim-config|
Modifty struct tags................................|gopher.nvim-struct-tags| Modifty struct tags................................|gopher.nvim-struct-tags|
Auto implementation of interface methods..................|gopher.nvim-impl| Auto implementation of interface methods..................|gopher.nvim-impl|
Generating unit tests boilerplate......................|gopher.nvim-gotests|
Setup `nvim-dap` for Go......................................|gopher.nvim-dap| Setup `nvim-dap` for Go......................................|gopher.nvim-dap|
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
@ -145,6 +146,51 @@ simple example:
< <
==============================================================================
------------------------------------------------------------------------------
*gopher.nvim-gotests*
gotests is utilizing the `gotests` tool to generate unit tests boilerplate.
Usage ~
- generate unit test for spesisfic function/method
- to specift the function/method put your cursor on it
- run `:GoTestAdd`
- generate unit tests for all functions/methods in current file
- run `:GoTestsAll`
- generate unit tests only for exported(public) functions/methods
- run `:GoTestsExp`
you can also specify the template to use for generating the tests. see |gopher.nvim-config|
more details about templates can be found at: https://github.com/cweill/gotests
------------------------------------------------------------------------------
*gopher.nvim-gotests-named*
if you prefare using named tests, you can enable it in the config.
but you would need to install `gotests@develop` because stable version doesn't support this feature.
you can do it with:
>lua
-- simply run go get in your shell:
go install github.com/cweill/gotests/...@develop
-- if you want to install it within neovim, you can use one of this:
vim.fn.jobstart("go install github.com/cweill/gotests/...@develop")
-- or if you want to use mason:
require("mason-tool-installer").setup {
ensure_installed = {
{ "gotests", version = "develop" },
}
}
<
if you choose to install `gotests` within neovim, i recommend adding it to your `build` section in your |lazy.nvim|
============================================================================== ==============================================================================
------------------------------------------------------------------------------ ------------------------------------------------------------------------------
*gopher.nvim-dap* *gopher.nvim-dap*

View file

@ -1,3 +1,44 @@
---@toc_entry Generating unit tests boilerplate
---@tag gopher.nvim-gotests
---@text gotests is utilizing the `gotests` tool to generate unit tests boilerplate.
---@usage
--- - generate unit test for spesisfic function/method
--- - to specift the function/method put your cursor on it
--- - run `:GoTestAdd`
---
--- - generate unit tests for all functions/methods in current file
--- - run `:GoTestsAll`
---
--- - generate unit tests only for exported(public) functions/methods
--- - run `:GoTestsExp`
---
--- you can also specify the template to use for generating the tests. see |gopher.nvim-config|
--- more details about templates can be found at: https://github.com/cweill/gotests
---
---@tag gopher.nvim-gotests-named
---@text
--- if you prefare using named tests, you can enable it in the config.
--- but you would need to install `gotests@develop` because stable version doesn't support this feature.
--- you can do it with:
--- >lua
--- -- simply run go get in your shell:
--- go install github.com/cweill/gotests/...@develop
---
--- -- if you want to install it within neovim, you can use one of this:
---
--- vim.fn.jobstart("go install github.com/cweill/gotests/...@develop")
---
--- -- or if you want to use mason:
--- require("mason-tool-installer").setup {
--- ensure_installed = {
--- { "gotests", version = "develop" },
--- }
--- }
--- <
---
--- if you choose to install `gotests` within neovim, i recommend adding it to your `build` section in your |lazy.nvim|
local c = require "gopher.config" local c = require "gopher.config"
local ts_utils = require "gopher._utils.ts" local ts_utils = require "gopher._utils.ts"
local r = require "gopher._utils.runner" local r = require "gopher._utils.runner"
@ -5,6 +46,7 @@ local u = require "gopher._utils"
local gotests = {} local gotests = {}
---@param args table ---@param args table
---@private
local function add_test(args) local function add_test(args)
if c.gotests.named then if c.gotests.named then
table.insert(args, "-named") table.insert(args, "-named")
@ -35,7 +77,7 @@ local function add_test(args)
}) })
end end
---generate unit test for one function -- generate unit test for one function
function gotests.func_test() function gotests.func_test()
local ns = ts_utils.get_func_method_node_at_pos(unpack(vim.api.nvim_win_get_cursor(0))) local ns = ts_utils.get_func_method_node_at_pos(unpack(vim.api.nvim_win_get_cursor(0)))
if ns == nil or ns.name == nil then if ns == nil or ns.name == nil then
@ -46,12 +88,12 @@ function gotests.func_test()
add_test { "-only", ns.name } add_test { "-only", ns.name }
end end
---generate unit tests for all functions in current file -- generate unit tests for all functions in current file
function gotests.all_tests() function gotests.all_tests()
add_test { "-all" } add_test { "-all" }
end end
---generate unit tests for all exported functions -- generate unit tests for all exported functions
function gotests.all_exported_tests() function gotests.all_exported_tests()
add_test { "-exported" } add_test { "-exported" }
end end

View file

@ -12,6 +12,7 @@ local files = {
"lua/gopher/config.lua", "lua/gopher/config.lua",
"lua/gopher/struct_tags.lua", "lua/gopher/struct_tags.lua",
"lua/gopher/impl.lua", "lua/gopher/impl.lua",
"lua/gopher/gotests.lua",
"lua/gopher/dap.lua", "lua/gopher/dap.lua",
} }