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()