test(git): add regression tests with a minimal headless harness
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
local h = require("helpers")
|
||||
local util = require("git.util")
|
||||
|
||||
h.test("set_buf_lines preserves modifiable=false", function()
|
||||
local buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.bo[buf].modifiable = false
|
||||
util.set_buf_lines(buf, 0, -1, { "a", "b", "c" })
|
||||
h.eq(
|
||||
vim.api.nvim_buf_get_lines(buf, 0, -1, false),
|
||||
{ "a", "b", "c" },
|
||||
"lines should be replaced"
|
||||
)
|
||||
h.falsy(vim.bo[buf].modifiable, "modifiable should stay false")
|
||||
h.falsy(vim.bo[buf].modified, "modified should be cleared")
|
||||
vim.api.nvim_buf_delete(buf, { force = true })
|
||||
end)
|
||||
|
||||
h.test("set_buf_lines preserves modifiable=true", function()
|
||||
local buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.bo[buf].modifiable = true
|
||||
util.set_buf_lines(buf, 0, -1, { "a", "b" })
|
||||
h.truthy(vim.bo[buf].modifiable, "modifiable should stay true")
|
||||
h.falsy(vim.bo[buf].modified, "modified should be cleared")
|
||||
vim.api.nvim_buf_delete(buf, { force = true })
|
||||
end)
|
||||
|
||||
h.test("set_buf_lines partial range update", function()
|
||||
local buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.api.nvim_buf_set_lines(buf, 0, -1, false, { "a", "b", "c", "d" })
|
||||
util.set_buf_lines(buf, 1, 3, { "X", "Y", "Z" })
|
||||
h.eq(
|
||||
vim.api.nvim_buf_get_lines(buf, 0, -1, false),
|
||||
{ "a", "X", "Y", "Z", "d" },
|
||||
"lines [1, 3) should be replaced"
|
||||
)
|
||||
vim.api.nvim_buf_delete(buf, { force = true })
|
||||
end)
|
||||
|
||||
h.test("set_buf_lines errors on out-of-bounds (strict_indexing)", function()
|
||||
local buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.api.nvim_buf_set_lines(buf, 0, -1, false, { "a", "b" })
|
||||
local ok = pcall(util.set_buf_lines, buf, 100, 200, { "x" })
|
||||
h.falsy(ok, "out-of-bounds index should error")
|
||||
vim.api.nvim_buf_delete(buf, { force = true })
|
||||
end)
|
||||
|
||||
h.report()
|
||||
Reference in New Issue
Block a user