fix(coding-agent): update project npm packages

closes #2459
This commit is contained in:
Mario Zechner
2026-03-20 19:36:06 +01:00
parent 16937947be
commit eda1082d4b
4 changed files with 109 additions and 2 deletions

View File

@@ -1,4 +1,4 @@
import { mkdirSync, readFileSync, realpathSync, rmSync } from "node:fs";
import { mkdirSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
@@ -117,4 +117,28 @@ describe("package commands", () => {
errorSpy.mockRestore();
}
});
it("suggests the configured source when update input omits the npm prefix", async () => {
const settingsPath = join(agentDir, "settings.json");
writeFileSync(settingsPath, JSON.stringify({ packages: ["npm:pi-formatter"] }, null, 2));
const errorSpy = vi.spyOn(console, "error").mockImplementation(() => {});
const logSpy = vi.spyOn(console, "log").mockImplementation(() => {});
try {
await expect(main(["update", "pi-formatter"])).resolves.toBeUndefined();
const stderr = errorSpy.mock.calls.map(([message]) => String(message)).join("\n");
const stdout = logSpy.mock.calls.map(([message]) => String(message)).join("\n");
expect(stderr).toContain("Did you mean npm:pi-formatter?");
expect(stdout).not.toContain("Updated pi-formatter");
expect(process.exitCode).toBe(1);
const settings = JSON.parse(readFileSync(settingsPath, "utf-8")) as { packages?: string[] };
expect(settings.packages).toContain("npm:pi-formatter");
} finally {
errorSpy.mockRestore();
logSpy.mockRestore();
}
});
});