mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-06 16:08:05 +00:00
Show the current line's author, relative date and commit summary as a dimmed hint after the line end, with the full message, date and hash on hover and the commit opened on click. Uncommitted lines read "You, now · Uncommitted changes". Reuses the blame command with a per-version cache and a debounced caret; skipped outside repositories, for untracked/ignored and very large files. Off by default: Settings › Version Control › Git › Show inline blame for the current line. Fixes #742.
50 lines
2.3 KiB
TypeScript
50 lines
2.3 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { splitCommandLine } from "./commandLine";
|
|
import { DEFAULT_WORKFLOW, validateWorkflow } from "./workflowSettings";
|
|
|
|
describe("validateWorkflow", () => {
|
|
it("defaults inline blame off and accepts only boolean values", () => {
|
|
expect(DEFAULT_WORKFLOW.vcs.git.inlineBlame).toBe(false);
|
|
expect(validateWorkflow({ vcs: { git: { inlineBlame: true } } }).vcs.git.inlineBlame).toBe(true);
|
|
expect(validateWorkflow({ vcs: { git: { inlineBlame: "true" } } }).vcs.git.inlineBlame).toBe(false);
|
|
});
|
|
|
|
it("falls back to defaults for missing or malformed values", () => {
|
|
expect(validateWorkflow(undefined)).toEqual(DEFAULT_WORKFLOW);
|
|
const v = validateWorkflow({
|
|
vcs: {
|
|
historyLimit: -5,
|
|
git: { updateMethod: "squash", incomingCheck: "never", largeFileMb: 0 },
|
|
confirmation: { onPatchCreated: "always" },
|
|
issueNavigation: [{ pattern: "" }, { pattern: "#(\\d+)", link: "x/$1" }],
|
|
},
|
|
console: { bufferKb: 1e12, foldPatterns: ["a", 3, ""] },
|
|
terminal: { cursorShape: "bar", env: { A: "1", B: 2 }, tabName: " " },
|
|
externalTools: [{ name: "Lint", id: "x" }, { name: "" }, { name: "Again", id: "x" }],
|
|
});
|
|
expect(v.vcs.historyLimit).toBe(10);
|
|
expect(v.vcs.git.updateMethod).toBe("merge");
|
|
expect(v.vcs.git.incomingCheck).toBe("never");
|
|
expect(v.vcs.git.largeFileMb).toBe(1);
|
|
expect(v.vcs.issueNavigation).toEqual([{ pattern: "#(\\d+)", link: "x/$1" }]);
|
|
expect(v.vcs.commit.nonModal).toBe(true);
|
|
expect(v.vcs.confirmation.onPatchCreated).toBe("ask");
|
|
expect(v.vcs.shelf.removeApplied).toBe(false);
|
|
expect(v.console.bufferKb).toBe(1_048_576);
|
|
expect(v.console.foldPatterns).toEqual(["a"]);
|
|
expect(v.terminal).toMatchObject({ cursorShape: "bar", env: { A: "1" }, tabName: "Local" });
|
|
expect(v.externalTools.map((t) => [t.id, t.name])).toEqual([
|
|
["x", "Lint"],
|
|
["x_", "Again"],
|
|
]);
|
|
});
|
|
});
|
|
|
|
describe("splitCommandLine", () => {
|
|
it("honours quotes and escapes", () => {
|
|
expect(splitCommandLine(`/bin/zsh --login`)).toEqual(["/bin/zsh", "--login"]);
|
|
expect(splitCommandLine(`sh -c "echo 'a b'" x\\ y ''`)).toEqual(["sh", "-c", "echo 'a b'", "x y", ""]);
|
|
expect(splitCommandLine(" ")).toEqual([]);
|
|
});
|
|
});
|