snacks.nvim/tests/picker/git_status_spec.lua
2025-01-31 19:08:32 +01:00

39 lines
1.5 KiB
Lua

---@module 'luassert'
local Git = require("snacks.picker.source.git")
describe("git status", function()
-- git status codes are always 2 characters
local tests = {
-- Unmerged cases
["AA"] = { xy = "AA", status = "added", unmerged = true },
["UU"] = { xy = "UU", status = "modified", unmerged = true },
["AU"] = { xy = "AU", status = "added", unmerged = true },
["DD"] = { xy = "DD", status = "deleted", unmerged = true },
["UD"] = { xy = "UD", status = "deleted", unmerged = true },
["DU"] = { xy = "DU", status = "deleted", unmerged = true },
["UA"] = { xy = "UA", status = "added", unmerged = true },
-- Regular cases
[" M"] = { xy = " M", status = "modified" },
[" D"] = { xy = " D", status = "deleted" },
[" R"] = { xy = " R", status = "renamed" },
["??"] = { xy = "??", status = "untracked" },
["!!"] = { xy = "!!", status = "ignored" },
-- Staged cases
["M "] = { xy = "M ", status = "modified", staged = true },
["T "] = { xy = "T ", status = "modified", staged = true },
["D "] = { xy = "D ", status = "deleted", staged = true },
["A "] = { xy = "A ", status = "added", staged = true },
["AD"] = { xy = "AD", status = "added", staged = true },
["C "] = { xy = "C ", status = "copied", staged = true },
}
for _, test in pairs(tests) do
it("should parse `" .. test.xy .. "`", function()
local status = Git.git_status(test.xy)
status.priority = nil
assert.are.same(test, status)
end)
end
end)