* idk how good this idea is * this could be working but i still cant figure out how to run it * ignore tags that mini.doc gens, but why? * chore(taskfile): force exiting after tests because i got infinit ci * chore(ci): add more nvim versions to run on * chore: update taskfile * feat: add docs generator * docs: its only begining * refactor: update docgen script * docs: write some more * docs(config): update * docs: update readme * language * hope it would work * what about that? * maybe this would work? * update md * upd * WHY DOESNT IT WORKING * idk by but 0.9.3 just fails the ci, so i deleted it from suite * again update, why does markdown not work in embeded html * maybe it can help? * upd * again update * kinda fix * fix: formatting * again some updating * some readme updating * fix, this shouldnt be in repo * i finnaly undertood how to fix this fking skill issue * fix(struct_tags): typo * refactor(docs): change the order in generated file * docs: install deps * refactor(scripts): rename doc-gen script * docs(impl): write docs * docs(dap): add doc * stylua . * docs(struct_tags): add doc * docs(gotests): add docs * docs(iferr): add docs * docs(comment): add doc * update CONTRIBUTING.md * docs(README): talk about `develop` branch * docs: update README.md
101 lines
2.9 KiB
Lua
101 lines
2.9 KiB
Lua
---@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 ts_utils = require "gopher._utils.ts"
|
|
local r = require "gopher._utils.runner"
|
|
local u = require "gopher._utils"
|
|
local gotests = {}
|
|
|
|
---@param args table
|
|
---@private
|
|
local function add_test(args)
|
|
if c.gotests.named then
|
|
table.insert(args, "-named")
|
|
end
|
|
|
|
if c.gotests.template_dir then
|
|
table.insert(args, "-template_dir")
|
|
table.insert(args, c.gotests.template_dir)
|
|
end
|
|
|
|
if c.gotests.template ~= "default" then
|
|
table.insert(args, "-template")
|
|
table.insert(args, c.gotests.template)
|
|
end
|
|
|
|
table.insert(args, "-w")
|
|
table.insert(args, vim.fn.expand "%")
|
|
|
|
return r.sync(c.commands.gotests, {
|
|
args = args,
|
|
on_exit = function(data, status)
|
|
if not status == 0 then
|
|
error("gotests failed: " .. data)
|
|
end
|
|
|
|
u.notify "unit test(s) generated"
|
|
end,
|
|
})
|
|
end
|
|
|
|
-- generate unit test for one function
|
|
function gotests.func_test()
|
|
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
|
|
u.notify("cursor on func/method and execute the command again", vim.log.levels.WARN)
|
|
return
|
|
end
|
|
|
|
add_test { "-only", ns.name }
|
|
end
|
|
|
|
-- generate unit tests for all functions in current file
|
|
function gotests.all_tests()
|
|
add_test { "-all" }
|
|
end
|
|
|
|
-- generate unit tests for all exported functions
|
|
function gotests.all_exported_tests()
|
|
add_test { "-exported" }
|
|
end
|
|
|
|
return gotests
|