mirror of
https://github.com/wassname/pi-lgtm.git
synced 2026-06-27 15:31:29 +08:00
reject task-management verbs in /lgtm
This commit is contained in:
+2
-2
@@ -70,8 +70,8 @@ export function parseLgtmArgs(args: string): LgtmCommandSpec {
|
||||
if (trimmed === "*") return { kind: "view_all" };
|
||||
|
||||
const tokens = trimmed.split(/[\s,]+/).map(token => token.trim()).filter(Boolean);
|
||||
if (tokens[0] === "clear") {
|
||||
return { kind: "error", message: "Task clearing lives in /tasks now. /lgtm is viewer-only." };
|
||||
if (["clear", "delete"].includes(tokens[0])) {
|
||||
return { kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." };
|
||||
}
|
||||
|
||||
return { kind: "view", ids: tokens.map(token => token.replace(/^#/, "")).filter(Boolean) };
|
||||
|
||||
@@ -55,9 +55,10 @@ describe("parseLgtmArgs", () => {
|
||||
});
|
||||
|
||||
it("rejects task-management forms", () => {
|
||||
expect(parseLgtmArgs("clear")).toEqual({ kind: "error", message: "Task clearing lives in /tasks now. /lgtm is viewer-only." });
|
||||
expect(parseLgtmArgs("clear *")).toEqual({ kind: "error", message: "Task clearing lives in /tasks now. /lgtm is viewer-only." });
|
||||
expect(parseLgtmArgs("clear #7")).toEqual({ kind: "error", message: "Task clearing lives in /tasks now. /lgtm is viewer-only." });
|
||||
expect(parseLgtmArgs("clear")).toEqual({ kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." });
|
||||
expect(parseLgtmArgs("clear *")).toEqual({ kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." });
|
||||
expect(parseLgtmArgs("clear #7")).toEqual({ kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." });
|
||||
expect(parseLgtmArgs("delete #7")).toEqual({ kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." });
|
||||
});
|
||||
});
|
||||
|
||||
@@ -104,6 +105,20 @@ describe("/lgtm command", () => {
|
||||
await command.handler("clear 1", { ui });
|
||||
|
||||
expect(harness.sentMessages).toHaveLength(0);
|
||||
expect(ui.notify).toHaveBeenCalledWith("Task clearing lives in /tasks now. /lgtm is viewer-only.", "error");
|
||||
expect(ui.notify).toHaveBeenCalledWith("Task management lives in /tasks now. /lgtm is viewer-only.", "error");
|
||||
});
|
||||
|
||||
it("rejects /lgtm delete and points task management back to /tasks", async () => {
|
||||
const harness = makeHarness();
|
||||
await harness.execTool("TaskCreate", { subject: "Task A", description: "Desc", done_criterion: "done" });
|
||||
|
||||
const ui = harness.makeUi();
|
||||
const command = harness.commands.get("lgtm");
|
||||
if (!command) throw new Error("/lgtm not registered");
|
||||
|
||||
await command.handler("delete 1", { ui });
|
||||
|
||||
expect(harness.sentMessages).toHaveLength(0);
|
||||
expect(ui.notify).toHaveBeenCalledWith("Task management lives in /tasks now. /lgtm is viewer-only.", "error");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user