[mirror] Make your go dev experience better
github.com/olexsmir/gopher.nvim
neovim
golang
1local base_dir = vim.env.GOPHER_DIR or vim.fn.expand "%:p:h"
2
3---@class gopher.TestUtils
4local testutils = {}
5
6testutils.mininit_path = vim.fs.joinpath(base_dir, "scripts", "minimal_init.lua")
7testutils.fixtures_dir = vim.fs.joinpath(base_dir, "spec/fixtures")
8
9---@generic T
10---@param a T
11---@param b T
12---@return boolean
13function testutils.eq(a, b)
14 return MiniTest.expect.equality(a, b)
15end
16
17---@return string
18function testutils.tmpfile()
19 return vim.fn.tempname() .. ".go"
20end
21
22---@param path string
23---@return string
24function testutils.readfile(path)
25 return vim.fn.join(vim.fn.readfile(path), "\n")
26end
27
28---@param fpath string
29---@param contents string
30function testutils.writefile(fpath, contents)
31 vim.fn.writefile(vim.split(contents, "\n"), fpath)
32end
33
34---@param fpath string
35function testutils.deletefile(fpath)
36 vim.fn.delete(fpath)
37end
38
39---@param fixture string
40---@return {input: string, output: string}
41function testutils.get_fixtures(fixture)
42 return {
43 input = testutils.readfile(vim.fs.joinpath(testutils.fixtures_dir, fixture) .. "_input.go"),
44 output = testutils.readfile(vim.fs.joinpath(testutils.fixtures_dir, fixture) .. "_output.go"),
45 }
46end
47
48return testutils