diff --git a/src/cli/update-cli.test.ts b/src/cli/update-cli.test.ts index 2ca137835b1..b9e078199d2 100644 --- a/src/cli/update-cli.test.ts +++ b/src/cli/update-cli.test.ts @@ -34,12 +34,46 @@ vi.mock("../config/config.js", () => ({ writeConfigFile: vi.fn(), })); -vi.mock("../infra/update-check.js", async () => { - const actual = await vi.importActual( - "../infra/update-check.js", - ); +vi.mock("../infra/update-check.js", () => { + const parseSemver = ( + value: string | null, + ): { major: number; minor: number; patch: number } | null => { + if (!value) { + return null; + } + const m = /^(\d+)\.(\d+)\.(\d+)/.exec(value); + if (!m) { + return null; + } + const major = Number(m[1]); + const minor = Number(m[2]); + const patch = Number(m[3]); + if (!Number.isFinite(major) || !Number.isFinite(minor) || !Number.isFinite(patch)) { + return null; + } + return { major, minor, patch }; + }; + + const compareSemverStrings = (a: string | null, b: string | null): number | null => { + const pa = parseSemver(a); + const pb = parseSemver(b); + if (!pa || !pb) { + return null; + } + if (pa.major !== pb.major) { + return pa.major < pb.major ? -1 : 1; + } + if (pa.minor !== pb.minor) { + return pa.minor < pb.minor ? -1 : 1; + } + if (pa.patch !== pb.patch) { + return pa.patch < pb.patch ? -1 : 1; + } + return 0; + }; + return { - ...actual, + compareSemverStrings, checkUpdateStatus: vi.fn(), fetchNpmTagVersion: vi.fn(), resolveNpmChannelTag: vi.fn(),