refactor: struct tags (#94)

* refactor(struct_tags): finally my hands got to this

* feat(struct_tags): trim output

* feat(struct_tags): add :GoTagClear

* docgen

* refactor(struct_tags): error on out-of-bounds

* feat(struct_tags): add support for working with multiple tags at the once

* test(struct_tags): test both possible inputs

* refactor(struct_tags): add type annotation, dont force write

* refactor(struct_tags): optimization ig

* docs: fix

* fixup! refactor(struct_tags): add type annotation, dont force write

* task docgen

---------

Co-authored-by: Oliver <1571880470@qq.com>
This commit is contained in:
Smirnov Oleksandr 2025-03-19 18:06:33 +02:00 committed by GitHub
parent e9f2eef5e7
commit 55bc5787d1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 177 additions and 70 deletions

View file

@ -10,38 +10,74 @@ local T = MiniTest.new_set {
},
}
T["struct_tags"] = MiniTest.new_set {}
T["struct_tags"]["works add"] = function()
T["struct_tags"]["should add tag"] = function()
local tmp = t.tmpfile()
local fixtures = t.get_fixtures "tags/add"
t.writefile(tmp, fixtures.input)
child.cmd("silent edit " .. tmp)
child.fn.setpos(".", { child.fn.bufnr "%", 3, 6, 0 })
child.fn.setpos(".", { child.fn.bufnr(tmp), 3, 6, 0 })
child.cmd "GoTagAdd json"
child.cmd "write"
t.eq(t.readfile(tmp), fixtures.output)
end
T["struct_tags"]["works remove"] = function()
T["struct_tags"]["should remove tag"] = function()
local tmp = t.tmpfile()
local fixtures = t.get_fixtures "tags/remove"
t.writefile(tmp, fixtures.input)
child.cmd("silent edit " .. tmp)
child.fn.setpos(".", { child.fn.bufnr "%", 4, 6, 0 })
child.fn.setpos(".", { child.fn.bufnr(tmp), 4, 6, 0 })
child.cmd "GoTagRm json"
child.cmd "write"
t.eq(t.readfile(tmp), fixtures.output)
end
T["struct_tags"]["works many structs"] = function()
T["struct_tags"]["should be able to handle many structs"] = function()
local tmp = t.tmpfile()
local fixtures = t.get_fixtures "tags/many"
t.writefile(tmp, fixtures.input)
child.cmd("silent edit " .. tmp)
child.fn.setpos(".", { child.fn.bufnr "%", 10, 3, 0 })
child.fn.setpos(".", { child.fn.bufnr(tmp), 10, 3, 0 })
child.cmd "GoTagAdd testing"
child.cmd "write"
t.eq(t.readfile(tmp), fixtures.output)
end
T["struct_tags"]["should clear struct"] = function()
local tmp = t.tmpfile()
local fixtures = t.get_fixtures "tags/clear"
t.writefile(tmp, fixtures.input)
child.cmd("silent edit " .. tmp)
child.fn.setpos(".", { child.fn.bufnr(tmp), 3, 1, 0 })
child.cmd "GoTagClear"
child.cmd "write"
t.eq(t.readfile(tmp), fixtures.output)
end
T["struct_tags"]["should add more than one tag"] = function()
local tmp = t.tmpfile()
local fixtures = t.get_fixtures "tags/add_many"
t.writefile(tmp, fixtures.input)
--- with comma, like gomodifytags
child.cmd("silent edit " .. tmp)
child.fn.setpos(".", { child.fn.bufnr(tmp), 3, 1 })
child.cmd "GoTagAdd test4,test5"
child.cmd "write"
-- without comma
child.cmd("silent edit " .. tmp)
child.fn.setpos(".", { child.fn.bufnr(tmp), 3, 1 })
child.cmd "GoTagAdd test1 test2"
child.cmd "write"
t.eq(t.readfile(tmp), fixtures.output)
end