refactor(update): extract package manager bootstrap logic

This commit is contained in:
Peter Steinberger
2026-04-06 01:38:46 +01:00
parent 0793136c63
commit d37b97c2ff
8 changed files with 376 additions and 217 deletions

View File

@@ -26,19 +26,34 @@ function makeResult(
}
describe("inferUpdateFailureHints", () => {
it("returns a package-manager bootstrap hint for required manager failures", () => {
it("returns a package-manager bootstrap hint for pnpm npm-bootstrap failures", () => {
const result = {
status: "error",
mode: "git",
reason: "required-manager-unavailable",
reason: "pnpm-npm-bootstrap-failed",
steps: [],
durationMs: 1,
} satisfies UpdateRunResult;
const hints = inferUpdateFailureHints(result);
expect(hints.join("\n")).toContain("requires its declared package manager");
expect(hints.join("\n")).toContain("Install the missing package manager manually");
expect(hints.join("\n")).toContain("bootstrap pnpm from npm");
expect(hints.join("\n")).toContain("Install pnpm manually");
});
it("returns a corepack hint when corepack is missing", () => {
const result = {
status: "error",
mode: "git",
reason: "pnpm-corepack-missing",
steps: [],
durationMs: 1,
} satisfies UpdateRunResult;
const hints = inferUpdateFailureHints(result);
expect(hints.join("\n")).toContain("corepack is missing");
expect(hints.join("\n")).toContain("Install pnpm manually");
});
it("returns EACCES hint for global update permission failures", () => {