Files
2026-10-12 22:00:13 +02:00

47 lines
1.6 KiB
Lua

-- Loads the plugin as Neovim would and drives it, with `cat` standing in
-- for lazysecrets. Fails (exits non-zero) on the first broken assertion.
--
-- nvim --clean -l tests/smoke.lua
local root = vim.fn.getcwd()
local tmp = vim.fn.tempname()
vim.opt.rtp:prepend(root)
vim.cmd.runtime("plugin/lazysecrets.lua")
assert(vim.fn.exists(":Lazysecrets") == 2, ":Lazysecrets isn't defined without setup()")
assert(not package.loaded.lazysecrets, "the module loads before it's used")
local m = require("lazysecrets")
m.setup({ cmd = "cat", theme_path = tmp .. "/theme.yaml", win = { width = 0.5 } })
assert(m.config.win.height == 0.9, "setup() replaced the defaults it didn't set")
-- A second repo, to open from.
local other = tmp .. "/other"
vim.fn.mkdir(other .. "/sub", "p")
vim.fn.mkdir(other .. "/.git", "p")
local function job()
return vim.b[vim.api.nvim_get_current_buf()].terminal_job_id
end
m.open({ cwd = root })
local first = job()
assert(first, "open() didn't start a terminal")
assert(vim.api.nvim_win_get_config(0).relative == "editor", "open() isn't in a float")
assert(vim.fn.filereadable(m.config.theme_path) == 1, "open() didn't write the theme")
assert(vim.fn.readfile(m.config.theme_path)[2] == "theme:", "the theme file has no theme")
vim.cmd.wincmd("p")
m.open({ cwd = root .. "/lua" })
assert(job() == first, "opening in the same repo started another lazysecrets")
m.open()
assert(job() == first, "opening from the float started another lazysecrets")
vim.cmd.wincmd("p")
m.open({ cwd = other .. "/sub" })
assert(job() ~= first, "opening in another repo reused the first one")
vim.fn.delete(tmp, "rf")
print("ok")