import { describe, expect, it } from "vitest"; import { isGitMutatingCommand } from "./git-context.js"; describe("isGitMutatingCommand — positives", () => { const mutating = [ "git checkout main", "git switch feature", "git commit -m 'x'", "git merge main", "git rebase main", "git pull", "git reset --hard HEAD", "git revert abc", "git cherry-pick abc", "git worktree add ../wt", "git am < patch", "git stash", ]; for (const cmd of mutating) { it(`matches: ${cmd}`, () => { expect(isGitMutatingCommand(cmd)).toBe(true); }); } it("matches when chained with preceding command", () => { expect(isGitMutatingCommand("cd x && git commit")).toBe(true); }); }); describe("isGitMutatingCommand — negatives", () => { const nonMutating = [ "git status", "git log", "git diff", "git rev-parse HEAD", "git config user.name", "gitmoji commit", "git --version", ]; for (const cmd of nonMutating) { it(`does NOT match: ${cmd}`, () => { expect(isGitMutatingCommand(cmd)).toBe(false); }); } it("rejects empty string", () => { expect(isGitMutatingCommand("")).toBe(false); }); });