Skip to content

Commit

Permalink
Add ability to configure golang adapter. Remove default adapter (#5)
Browse files Browse the repository at this point in the history
* Add ability to configure golang adapter
* Remove default adapter
  • Loading branch information
quolpr committed Jun 25, 2024
1 parent 9a029d4 commit a3bb0b6
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 19 deletions.
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ local qt = require 'quicktest'
-- Choose your adapter, here all supported adapters are listed
qt.setup({
adapters = {
require("quicktest.adapters.golang"),
require("quicktest.adapters.golang")({
additional_args = function(bufnr) return { '-race', '-count=1' } end
-- bin = function(bufnr) return 'go' end
-- cwd = function(bufnr) return 'your-cwd' end
}),
require("quicktest.adapters.vitest"),
require("quicktest.adapters.elixir"),
}
Expand Down Expand Up @@ -109,7 +113,11 @@ Using Lazy:
qt.setup({
-- Choose your adapter, here all supported adapters are listed
adapters = {
require("quicktest.adapters.golang"),
require("quicktest.adapters.golang")({
additional_args = function(bufnr) return { '-race', '-count=1' } end
-- bin = function(bufnr) return 'go' end
-- cwd = function(bufnr) return 'your-cwd' end
}),
require("quicktest.adapters.vitest"),
require("quicktest.adapters.elixir"),
}
Expand Down
5 changes: 1 addition & 4 deletions lua/quicktest.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
local module = require("quicktest.module")

local config = {
adapters = {
require("quicktest.adapters.golang"),
require("quicktest.adapters.elixir"),
},
adapters = {},
}

---@class MyModule
Expand Down
13 changes: 7 additions & 6 deletions lua/quicktest/adapters/golang/cmd.lua
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
local M = {}

--- @params module string
--- @params func_names string[]
--- @params sub_func_names string[]
--- @param module string
--- @param func_names string[]
--- @param sub_func_names string[]
--- @param additional_args string[]
--- @return string[]
function M.build_args(module, func_names, sub_func_names)
function M.build_args(module, func_names, sub_func_names, additional_args)
local args = {
"test",
}
Expand Down Expand Up @@ -36,8 +37,8 @@ function M.build_args(module, func_names, sub_func_names)
end
table.insert(args, "-v")
table.insert(args, "-json")
table.insert(args, "-race")
table.insert(args, "-count=1")

args = vim.list_extend(args, additional_args)

return args
end
Expand Down
43 changes: 36 additions & 7 deletions lua/quicktest/adapters/golang/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@ local cmd = require("quicktest.adapters.golang.cmd")
local fs = require("quicktest.fs_utils")
local Job = require("plenary.job")

---@class GoAdapterOptions
---@field cwd (fun(bufnr: integer): string)?
---@field bin (fun(bufnr: integer): string)?
---@field additional_args (fun(bufnr: integer): string[])?

local M = {
name = "go",
---@type GoAdapterOptions
options = {},
}

local ns = vim.api.nvim_create_namespace("quicktest-go")
Expand Down Expand Up @@ -58,7 +65,7 @@ end
---@return GoRunParams | nil, string | nil
M.build_file_run_params = function(bufnr, cursor_pos)
local func_names = ts.get_func_names(bufnr)
local cwd = find_cwd(bufnr) or vim.fn.getcwd()
local cwd = M.options.cwd and M.options.cwd(bufnr) or find_cwd(bufnr) or vim.fn.getcwd()
local module = get_module_path(cwd, bufnr) or "."

if not func_names or #func_names == 0 then
Expand Down Expand Up @@ -87,7 +94,7 @@ M.build_line_run_params = function(bufnr, cursor_pos)
if sub_name then
sub_func_names = { sub_name }
end
local cwd = find_cwd(bufnr) or vim.fn.getcwd()
local cwd = M.options.cwd and M.options.cwd(bufnr) or find_cwd(bufnr) or vim.fn.getcwd()
local module = get_module_path(cwd, bufnr) or "."

if not func_names or #func_names == 0 then
Expand All @@ -109,7 +116,7 @@ end
---@param cursor_pos integer[]
---@return GoRunParams | nil, string | nil
M.build_all_run_params = function(bufnr, cursor_pos)
local cwd = find_cwd(bufnr) or vim.fn.getcwd()
local cwd = M.options.cwd and M.options.cwd(bufnr) or find_cwd(bufnr) or vim.fn.getcwd()
local module = "./..."

return {
Expand All @@ -127,7 +134,7 @@ end
---@param cursor_pos integer[]
---@return GoRunParams | nil, string | nil
M.build_dir_run_params = function(bufnr, cursor_pos)
local cwd = find_cwd(bufnr) or vim.fn.getcwd()
local cwd = M.options.cwd and M.options.cwd(bufnr) or find_cwd(bufnr) or vim.fn.getcwd()
local module = get_module_path(cwd, bufnr) or "."

return {
Expand All @@ -145,9 +152,16 @@ end
---@param send fun(data: CmdData)
---@return integer
M.run = function(params, send)
local args = cmd.build_args(
params.module,
params.func_names,
params.sub_func_names,
M.options.additional_args and M.options.additional_args(params.bufnr) or {}
)

local job = Job:new({
command = "go",
args = cmd.build_args(params.module, params.func_names, params.sub_func_names),
command = M.options.bin and M.options.bin(params.bufnr) or "go",
args = args,
cwd = params.cwd,
on_stdout = function(_, data)
--- @type GoLogEntry
Expand Down Expand Up @@ -176,7 +190,12 @@ M.run = function(params, send)
end

M.title = function(params)
local args = cmd.build_args(params.module, params.func_names, params.sub_func_names)
local args = cmd.build_args(
params.module,
params.func_names,
params.sub_func_names,
M.options.additional_args and M.options.additional_args(params.bufnr) or {}
)

return "Running test: " .. table.concat({ unpack(args, 2) }, " ")
end
Expand Down Expand Up @@ -218,4 +237,14 @@ M.is_enabled = function(bufnr)
return vim.endswith(bufname, "_test.go")
end

--- Adapter options.
setmetatable(M, {
---@param opts GoAdapterOptions
__call = function(_, opts)
M.options = opts

return M
end,
})

return M

0 comments on commit a3bb0b6

Please sign in to comment.