refactor(git): replace status_view URI scheme with path-style name
This commit is contained in:
@@ -315,3 +315,93 @@ t.test(
|
||||
)
|
||||
end
|
||||
)
|
||||
|
||||
t.test("sidebar buffer is named <worktree>/Git Status", function()
|
||||
local repo = h.make_repo({ ["foo.txt"] = "x\n" })
|
||||
vim.cmd("cd " .. repo)
|
||||
require("git.status_view").open({ placement = "sidebar" })
|
||||
local r = assert(require("git.core.repo").find(vim.fn.getcwd()))
|
||||
local buf = find_sidebar()
|
||||
assert(buf, "sidebar buffer should exist")
|
||||
t.eq(
|
||||
vim.api.nvim_buf_get_name(buf),
|
||||
r.worktree .. "/Git Status",
|
||||
"buffer name should be <worktree>/Git Status"
|
||||
)
|
||||
end)
|
||||
|
||||
t.test(
|
||||
"calling open twice without closing focuses the existing sidebar",
|
||||
function()
|
||||
local repo = h.make_repo({ ["foo.txt"] = "x\n" })
|
||||
vim.cmd("cd " .. repo)
|
||||
require("git.status_view").open({ placement = "sidebar" })
|
||||
local first = find_sidebar()
|
||||
assert(first, "first sidebar buffer should exist")
|
||||
|
||||
require("git.status_view").open({ placement = "sidebar" })
|
||||
local second = find_sidebar()
|
||||
assert(second, "second sidebar buffer should exist")
|
||||
t.eq(
|
||||
first,
|
||||
second,
|
||||
"consecutive opens should reuse the visible sidebar"
|
||||
)
|
||||
local count = 0
|
||||
for _, b in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.bo[b].filetype == "gitstatus" then
|
||||
count = count + 1
|
||||
end
|
||||
end
|
||||
t.eq(count, 1, "only one gitstatus buffer should exist")
|
||||
end
|
||||
)
|
||||
|
||||
t.test("opening for different worktrees creates separate buffers", function()
|
||||
local repo_a = h.make_repo({ ["a.txt"] = "x\n" })
|
||||
local repo_b = h.make_repo({ ["b.txt"] = "y\n" })
|
||||
|
||||
vim.cmd("cd " .. repo_a)
|
||||
require("git.status_view").open({ placement = "sidebar" })
|
||||
local buf_a = find_sidebar()
|
||||
require("git.status_view").toggle()
|
||||
|
||||
vim.cmd("cd " .. repo_b)
|
||||
require("git.status_view").open({ placement = "sidebar" })
|
||||
local buf_b = find_sidebar()
|
||||
|
||||
assert(buf_a and buf_b)
|
||||
t.truthy(
|
||||
buf_a ~= buf_b,
|
||||
"different worktrees should produce different buffers"
|
||||
)
|
||||
end)
|
||||
|
||||
t.test("sidebar buffer is buftype=nofile and not buflisted", function()
|
||||
local repo = h.make_repo({ ["foo.txt"] = "x\n" })
|
||||
vim.cmd("cd " .. repo)
|
||||
require("git.status_view").open({ placement = "sidebar" })
|
||||
local buf = find_sidebar()
|
||||
assert(buf, "sidebar buffer should exist")
|
||||
t.eq(vim.bo[buf].buftype, "nofile", "buftype should be nofile")
|
||||
t.eq(vim.bo[buf].buflisted, false, "buflisted should be false")
|
||||
end)
|
||||
|
||||
t.test("sidebar buffer name does not get written to disk", function()
|
||||
local repo = h.make_repo({ ["foo.txt"] = "x\n" })
|
||||
vim.cmd("cd " .. repo)
|
||||
require("git.status_view").open({ placement = "sidebar" })
|
||||
local buf = find_sidebar()
|
||||
assert(buf, "sidebar buffer should exist")
|
||||
local name = vim.api.nvim_buf_get_name(buf)
|
||||
vim.api.nvim_buf_call(buf, function()
|
||||
pcall(function()
|
||||
vim.cmd("silent! write")
|
||||
end)
|
||||
end)
|
||||
t.eq(
|
||||
vim.uv.fs_stat(name),
|
||||
nil,
|
||||
"no real file should be created at the sidebar buffer's path"
|
||||
)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user