run tests independent of user nvim setup (#39)

* chore(lua_ls): now lua_ls knows about testing functions

* spec: change way how tests srtuctured

* test(config): refactor tests

* test: utils

* refactor(utils): remove not used function

* chore(ci): add test runner

* chore(ci): remove taskfile from deps

* fix: now it works
This commit is contained in:
Smirnov Oleksandr 2023-07-21 02:57:46 +03:00 committed by GitHub
parent b5327cd2eb
commit 5f8466d043
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 88 additions and 125 deletions

View file

@ -1,41 +0,0 @@
describe("gopher.config", function()
it("can be required", function()
require "gopher.config"
end)
it(".setup() when gets empty table not edit config", function()
local c = require "gopher.config"
c.setup {}
assert.are.same(c.config.commands.go, "go")
assert.are.same(c.config.commands.gomodifytags, "gomodifytags")
assert.are.same(c.config.commands.gotests, "gotests")
assert.are.same(c.config.commands.impl, "impl")
end)
it(".setup() when get one custom value sets that", function()
local c = require "gopher.config"
c.setup { commands = {
go = "custom_go",
} }
assert.are.same(c.config.commands.go, "custom_go")
end)
it(".setup() when get all custom values sets it", function()
local c = require "gopher.config"
c.setup {
commands = {
go = "go1.18",
gomodifytags = "user-gomodifytags",
gotests = "gotests",
impl = "goimpl",
},
}
assert.are.same(c.config.commands.go, "go1.18")
assert.are.same(c.config.commands.gomodifytags, "user-gomodifytags")
assert.are.same(c.config.commands.gotests, "gotests")
assert.are.same(c.config.commands.impl, "goimpl")
end)
end)

View file

@ -1,5 +0,0 @@
describe("gopher", function()
it("can be required", function()
require "gopher"
end)
end)

View file

@ -1,49 +0,0 @@
local cur_dir = vim.fn.expand "%:p:h"
describe("gopher.struct_tags", function()
it("can be required", function()
require "gopher.struct_tags"
end)
it("can add json tag to struct", function()
local tag = require "gopher.struct_tags"
local temp_file = vim.fn.tempname() .. ".go"
local input_file = vim.fn.readfile(cur_dir .. "/spec/fixtures/tags/add_input.go")
local output_file =
vim.fn.join(vim.fn.readfile(cur_dir .. "/spec/fixtures/tags/add_output.go"), "\n")
vim.fn.writefile(input_file, temp_file)
vim.cmd("silent exe 'e " .. temp_file .. "'")
vim.bo.filetype = "go"
local bufn = vim.fn.bufnr(0)
vim.fn.setpos(".", { bufn, 3, 6, 0 })
tag.add()
vim.wait(100)
assert.are.same(output_file, vim.fn.join(vim.fn.readfile(temp_file), "\n"))
vim.cmd("bd! " .. temp_file)
end)
it("can remove json tag from struct", function()
local tag = require "gopher.struct_tags"
local temp_file = vim.fn.tempname() .. ".go"
local input_file = vim.fn.readfile(cur_dir .. "/spec/fixtures/tags/remove_input.go")
local output_file =
vim.fn.join(vim.fn.readfile(cur_dir .. "/spec/fixtures/tags/remove_output.go"), "\n")
vim.fn.writefile(input_file, temp_file)
vim.cmd("silent exe 'e " .. temp_file .. "'")
vim.bo.filetype = "go"
local bufn = vim.fn.bufnr()
vim.fn.setpos(".", { bufn, 3, 6, 0 })
tag.remove()
vim.wait(100)
assert.are.same(output_file, vim.fn.join(vim.fn.readfile(temp_file), "\n"))
vim.cmd("bd! " .. temp_file)
end)
end)

View file

@ -1,19 +0,0 @@
describe("gopher._utils", function()
it("can be requried", function()
require "gopher._utils"
end)
it(".empty() with non-empty talbe", function()
local empty = require("gopher._utils").empty
local res = empty { first = "1", second = 2 }
assert.are.same(res, false)
end)
it(".empty() with empty talbe", function()
local empty = require("gopher._utils").empty
local res = empty {}
assert.are.same(res, true)
end)
end)

View file

@ -0,0 +1,29 @@
describe("gopher.config", function()
it(".setup() should provide default when .setup() is not called", function()
local c = require "gopher.config"
assert.are.same(c.commands.go, "go")
assert.are.same(c.commands.gomodifytags, "gomodifytags")
assert.are.same(c.commands.gotests, "gotests")
assert.are.same(c.commands.impl, "impl")
assert.are.same(c.commands.iferr, "iferr")
assert.are.same(c.commands.dlv, "dlv")
end)
it(".setup() should change options on users config", function()
local c = require "gopher.config"
c.setup {
commands = {
go = "go1.420",
gomodifytags = "iDontUseRustBtw",
},
}
assert.are.same(c.commands.go, "go1.420")
assert.are.same(c.commands.gomodifytags, "iDontUseRustBtw")
assert.are.same(c.commands.gotests, "gotests")
assert.are.same(c.commands.impl, "impl")
assert.are.same(c.commands.iferr, "iferr")
assert.are.same(c.commands.dlv, "dlv")
end)
end)

25
spec/units/utils_spec.lua Normal file
View file

@ -0,0 +1,25 @@
describe("gopher._utils", function()
local u = require "gopher._utils"
describe(".is_tbl_empty()", function()
it("it is empty", function()
assert.are.same(true, u.is_tbl_empty {})
end)
it("it is not empty", function()
assert.are.same(false, u.is_tbl_empty { first = "1", second = 2 })
end)
end)
describe(".sreq()", function()
it("can require existing module", function()
assert.are.same(require "gopher", u.sreq "gopher")
end)
it("cannot require non-existing module", function()
assert.has.errors(function()
u.sreq "iDontExistBtw"
end)
end)
end)
end)