refactor(agent): dedupe harness and command workflows
This commit is contained in:
@@ -35,46 +35,10 @@ vi.mock("../config/config.js", () => ({
|
||||
writeConfigFile: vi.fn(),
|
||||
}));
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
vi.mock("../infra/update-check.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../infra/update-check.js")>();
|
||||
return {
|
||||
compareSemverStrings,
|
||||
...actual,
|
||||
checkUpdateStatus: vi.fn(),
|
||||
fetchNpmTagVersion: vi.fn(),
|
||||
resolveNpmChannelTag: vi.fn(),
|
||||
|
||||
Reference in New Issue
Block a user