merge github workflow and goimport fix

This commit is contained in:
ray-x 2021-09-03 03:18:46 +10:00
commit ee0d43ce5c
5 changed files with 42 additions and 132 deletions

View File

@ -4,19 +4,21 @@ local api = vim.api
local utils = require("go.utils")
local log = utils.log
local max_len = _GO_NVIM_CFG.max_line_len or 120
local goimport = _GO_NVIM_CFG.goimport ~= nil and _GO_NVIM_CFG.goimport or "gofumports"
local gofmt = _GO_NVIM_CFG.gofmt ~= nil and _GO_NVIM_CFG.gofmt or "gofumpt"
local gofmt_args = _GO_NVIM_CFG.gofmt_args and _GO_NVIM_CFG.gofmt_args
local goimport = _GO_NVIM_CFG.goimport or "goimports"
local gofmt = _GO_NVIM_CFG.gofmt or "gofumpt"
local gofmt_args = _GO_NVIM_CFG.gofmt_args
or {"--max-len=" .. tostring(max_len), "--base-formatter=" .. gofmt}
local goimport_args = _GO_NVIM_CFG.goimport_args and _GO_NVIM_CFG.goimport_args
local goimport_args = _GO_NVIM_CFG.goimport_args
or {"--max-len=" .. tostring(max_len), "--base-formatter=" .. goimport}
local run = function(args, from_buffer, cmd)
local run = function(fmtargs, from_buffer, cmd)
local args = vim.deepcopy(fmtargs)
if not from_buffer then
table.insert(args, api.nvim_buf_get_name(0))
print('formatting... ' .. api.nvim_buf_get_name(0) .. vim.inspect(args))
print('formatting buffer... ' .. api.nvim_buf_get_name(0) .. vim.inspect(args))
else
print('formatting... ' .. vim.inspect(args))
end
local old_lines = api.nvim_buf_get_lines(0, 0, -1, true)
@ -25,7 +27,7 @@ local run = function(args, from_buffer, cmd)
else
table.insert(args, 1, "golines")
end
log(args)
log("fmt cmd:", args)
local j = vim.fn.jobstart(args, {
on_stdout = function(job_id, data, event)
@ -109,15 +111,19 @@ M.goimport = function(...)
return
end
local args = {...}
local a1 = select(1, args)
local buf = true
if #args > 0 and type(args[1]) == "boolean" then
buf = a1
table.remove(args, 1)
end
require("go.install").install(goimport)
require("go.install").install("golines")
if args and _GO_NVIM_CFG.goimport == 'goimports' then
run(args, true, 'goimports')
else
utils.copy_array(goimport_args, a)
run({}, true)
local a = vim.deepcopy(goimport_args)
if #args > 0 and _GO_NVIM_CFG.goimport == 'goimports' then -- dont use golines
return run(args, buf, 'goimports')
end
run(goimport_args, buf)
end
return M

View File

@ -120,6 +120,8 @@ function M.setup()
if _GO_NVIM_CFG.gopls_cmd then
gopls.cmd = _GO_NVIM_CFG.gopls_cmd
else
gopls.cmd = {'gopls'}
end
if _GO_NVIM_CFG.lsp_gofumpt then

View File

@ -2,6 +2,6 @@ package main
import "fmt"
func main() {
func foo() {
fmt.Println("vim-go")
}

View File

@ -12,7 +12,11 @@ describe("should read coveragefile", function()
print("test:" .. path)
-- go.nvim may not auto loaded
vim.cmd([[packadd go.nvim]])
require('go').setup({trace = true, log_path = vim.fn.expand("$HOME") .. "/tmp/gonvim.log"})
require('go').setup({
trace = true,
lsp_cfg = true,
log_path = vim.fn.expand("$HOME") .. "/tmp/gonvim.log"
})
local cover = require("go.coverage")
local result = cover.read_cov(path)
@ -33,6 +37,7 @@ describe("should read coveragefile", function()
vim.cmd([[packadd go.nvim]])
require('go').setup({
trace = true,
lsp_cfg = true,
log_path = vim.fn.expand("$HOME") .. "/tmp/gonvim.log",
gocoverage_sign = '|'
})
@ -69,110 +74,4 @@ describe("should read coveragefile", function()
eq(result[1], sign)
-- eq(result[n][1], "github.com/go.nvim/branch.go")
end)
-- it("should run fmt sending from buffer", function()
-- local name = vim.fn.tempname() .. ".go"
-- print("tmp:" .. name)
-- --
-- local path = cur_dir .. "/lua/tests/fixtures/fmt/hello.go" -- %:p:h ? %:p
-- print("test:" .. path)
-- local lines = vim.fn.readfile(path)
-- vim.fn.writefile(lines, name)
-- local expected = vim.fn.join(vim.fn.readfile(
-- cur_dir .. "/lua/tests/fixtures/fmt/hello_golden.go"), "\n")
-- local cmd = " silent exe 'e " .. name .. "'"
-- vim.cmd(cmd)
-- local l = vim.api.nvim_buf_get_lines(0, 0, -1, true)
-- print("buf read: " .. vim.inspect(l))
--
-- vim.bo.filetype = "go"
--
-- print("exp:" .. vim.inspect(expected))
-- print("tmp" .. name)
--
-- local gofmt = require("go.format")
-- gofmt.gofmt(true)
-- -- enable the channel response
-- vim.wait(100, function()
-- end)
-- local fmt = vim.fn.join(vim.fn.readfile(name), "\n")
-- print("fmt" .. fmt)
-- vim.fn.assert_equal(fmt, expected)
-- eq(expected, fmt)
-- local cmd = "bd! " .. name
-- vim.cmd(cmd)
-- end)
-- it("should run import from file", function()
-- local path = cur_dir .. "/lua/tests/fixtures/fmt/goimports.go" -- %:p:h ? %:p
-- local expected = vim.fn.join(vim.fn.readfile(cur_dir
-- .. "/lua/tests/fixtures/fmt/goimports_golden.go"),
-- "\n")
-- local name = vim.fn.tempname() .. ".go"
-- print(name)
-- local lines = vim.fn.readfile(path)
-- vim.fn.writefile(lines, name)
-- local cmd = " silent exe 'e " .. name .. "'"
-- vim.cmd(cmd)
--
-- vim.cmd([[cd %:p:h]])
-- require("go.format").goimport()
-- print("workspaces:", vim.inspect(vim.lsp.buf.list_workspace_folders()))
-- vim.wait(100, function()
-- end)
-- local fmt = vim.fn.join(vim.fn.readfile(name), "\n")
-- eq(expected, fmt)
-- cmd = "bd! " .. name
-- vim.cmd(cmd)
-- end)
-- it("should run import from file with gopls", function()
-- local path = cur_dir .. "/lua/tests/fixtures/fmt/goimports2.go" -- %:p:h ? %:p
-- local expected = vim.fn.join(vim.fn.readfile(cur_dir
-- .. "/lua/tests/fixtures/fmt/goimports2_golden.go"),
-- "\n")
-- require("go").setup({goimport = "gopls", lsp_cfg = true})
--
-- _GO_NVIM_CFG.goimport = 'gopls'
--
-- local lines = vim.fn.readfile(path)
-- local cmd = " silent exe 'e " .. path .. "'"
-- vim.cmd(cmd)
-- vim.wait(1000, function()
-- end)
--
-- vim.cmd([[cd %:p:h]])
-- require("go.format").goimport()
--
-- print("workspaces:", vim.inspect(vim.lsp.buf.list_workspace_folders()))
-- vim.wait(200, function()
-- end)
-- local fmt = vim.fn.join(vim.fn.readfile(path), "\n")
-- -- eq(expected, fmt)
-- eq(1, 1) -- still not working
-- cmd = "bd! " .. path
-- vim.cmd(cmd)
-- end)
-- it("should run import from file buffer with gofumpts", function()
-- _GO_NVIM_CFG.goimport = 'gofumports'
-- local path = cur_dir .. "/lua/tests/fixtures/fmt/goimports.go" -- %:p:h ? %:p
-- local expected = vim.fn.join(vim.fn.readfile(cur_dir
-- .. "/lua/tests/fixtures/fmt/goimports_golden.go"),
-- "\n")
-- local name = vim.fn.tempname() .. ".go"
-- print(name)
-- local lines = vim.fn.readfile(path)
-- local cmd = " silent exe 'e " .. name .. "'"
-- vim.fn.writefile(lines, name)
-- vim.cmd(cmd)
-- vim.cmd([[cd %:p:h]])
-- print("code write to " .. name)
-- local gofmt = require("go.format")
-- gofmt.goimport(true)
--
-- vim.wait(100, function()
-- end)
-- local fmt = vim.fn.join(vim.fn.readfile(name), "\n")
--
-- print(fmt)
-- eq(expected, fmt)
-- end)
end)

View File

@ -81,7 +81,7 @@ describe("should run gofmt", function()
vim.fn.writefile(lines, name)
local cmd = " silent exe 'e " .. name .. "'"
vim.cmd(cmd)
require("go").setup({goimport = "goimports"})
vim.cmd([[cd %:p:h]])
require("go.format").goimport()
print("workspaces:", vim.inspect(vim.lsp.buf.list_workspace_folders()))
@ -92,32 +92,33 @@ describe("should run gofmt", function()
cmd = "bd! " .. name
vim.cmd(cmd)
end)
it("should run import from file buffer with gofumpts", function()
_GO_NVIM_CFG.goimport = 'gofumports'
it("should run import from file buffer with goimport", function()
local path = cur_dir .. "/lua/tests/fixtures/fmt/goimports.go" -- %:p:h ? %:p
local expected = vim.fn.join(vim.fn.readfile(cur_dir
.. "/lua/tests/fixtures/fmt/goimports_golden.go"),
"\n")
local name = vim.fn.tempname() .. ".go"
print(name)
_GO_NVIM_CFG.goimport = 'goimports'
local lines = vim.fn.readfile(path)
local cmd = " silent exe 'e " .. name .. "'"
vim.fn.writefile(lines, name)
vim.cmd(cmd)
vim.cmd([[cd %:p:h]])
print("code write to " .. name)
require("go").setup({goimport = "goimports"})
local gofmt = require("go.format")
gofmt.goimport(true)
vim.wait(100, function()
end)
vim.cmd([[w]])
local fmt = vim.fn.join(vim.fn.readfile(name), "\n")
print('formated', fmt)
print(fmt)
eq(expected, fmt)
end)
it("should run import from file with gopls", function()
local path = cur_dir .. "/lua/tests/fixtures/fmt/goimports2.go" -- %:p:h ? %:p
local expected = vim.fn.join(vim.fn.readfile(cur_dir
@ -126,13 +127,13 @@ describe("should run gofmt", function()
_GO_NVIM_CFG.goimport = 'gopls'
local lines = vim.fn.readfile(path)
local cmd = " silent exe 'e " .. path .. "'"
vim.cmd(cmd)
vim.cmd([[packadd go.nvim]])
vim.cmd([[cd %:p:h]])
vim.cmd([[packadd go.nvim]])
require("go").setup({goimport = "gopls", lsp_cfg = true})
vim.wait(1000, function()
vim.wait(2000, function()
end)
require("go.format").goimport()
@ -140,8 +141,10 @@ describe("should run gofmt", function()
print("workspaces:", vim.inspect(vim.lsp.buf.list_workspace_folders()))
vim.wait(200, function()
end)
vim.cmd([[w]])
local fmt = vim.fn.join(vim.fn.readfile(path), "\n")
-- eq(expected, fmt)
print(vim.inspect(fmt))
eq(expected, fmt)
eq(1, 1) -- still not working
cmd = "bd! " .. path
vim.cmd(cmd)