test: share fast-path mocks for targeted doctor suites

This commit is contained in:
Peter Steinberger
2026-02-22 14:14:03 +00:00
parent 2c0b72acb8
commit b0a8b3bebb
4 changed files with 58 additions and 50 deletions

View File

@@ -0,0 +1,49 @@
import { vi } from "vitest";
vi.mock("./doctor-completion.js", () => ({
doctorShellCompletion: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-gateway-daemon-flow.js", () => ({
maybeRepairGatewayDaemon: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-gateway-health.js", () => ({
checkGatewayHealth: vi.fn().mockResolvedValue({ healthOk: false }),
}));
vi.mock("./doctor-memory-search.js", () => ({
noteMemorySearchHealth: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-platform-notes.js", () => ({
noteDeprecatedLegacyEnvVars: vi.fn(),
noteMacLaunchAgentOverrides: vi.fn().mockResolvedValue(undefined),
noteMacLaunchctlGatewayEnvOverrides: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-sandbox.js", () => ({
maybeRepairSandboxImages: vi.fn(async (cfg: unknown) => cfg),
noteSandboxScopeWarnings: vi.fn(),
}));
vi.mock("./doctor-security.js", () => ({
noteSecurityWarnings: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-session-locks.js", () => ({
noteSessionLockHealth: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-state-integrity.js", () => ({
noteStateIntegrity: vi.fn().mockResolvedValue(undefined),
noteWorkspaceBackupTip: vi.fn(),
}));
vi.mock("./doctor-ui.js", () => ({
maybeRepairUiProtocolFreshness: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-workspace-status.js", () => ({
noteWorkspaceStatus: vi.fn(),
}));

View File

@@ -1,4 +1,4 @@
import { describe, expect, it, vi } from "vitest";
import { describe, expect, it } from "vitest";
import {
createDoctorRuntime,
findLegacyGatewayServices,
@@ -14,57 +14,10 @@ import {
uninstallLegacyGatewayServices,
writeConfigFile,
} from "./doctor.e2e-harness.js";
import "./doctor.fast-path-mocks.js";
const DOCTOR_MIGRATION_TIMEOUT_MS = 20_000;
vi.mock("./doctor-completion.js", () => ({
doctorShellCompletion: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-gateway-daemon-flow.js", () => ({
maybeRepairGatewayDaemon: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-gateway-health.js", () => ({
checkGatewayHealth: vi.fn().mockResolvedValue({ healthOk: false }),
}));
vi.mock("./doctor-memory-search.js", () => ({
noteMemorySearchHealth: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-platform-notes.js", () => ({
noteDeprecatedLegacyEnvVars: vi.fn(),
noteMacLaunchAgentOverrides: vi.fn().mockResolvedValue(undefined),
noteMacLaunchctlGatewayEnvOverrides: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-sandbox.js", () => ({
maybeRepairSandboxImages: vi.fn(async (cfg: unknown) => cfg),
noteSandboxScopeWarnings: vi.fn(),
}));
vi.mock("./doctor-security.js", () => ({
noteSecurityWarnings: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-session-locks.js", () => ({
noteSessionLockHealth: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-state-integrity.js", () => ({
noteStateIntegrity: vi.fn().mockResolvedValue(undefined),
noteWorkspaceBackupTip: vi.fn(),
}));
vi.mock("./doctor-ui.js", () => ({
maybeRepairUiProtocolFreshness: vi.fn().mockResolvedValue(undefined),
}));
vi.mock("./doctor-workspace-status.js", () => ({
noteWorkspaceStatus: vi.fn(),
}));
describe("doctor command", () => {
it("does not add a new gateway auth token while fixing legacy issues on invalid config", async () => {
mockDoctorConfigSnapshot({

View File

@@ -3,6 +3,9 @@ import os from "node:os";
import path from "node:path";
import { beforeAll, describe, expect, it, vi } from "vitest";
import { createDoctorRuntime, mockDoctorConfigSnapshot, note } from "./doctor.e2e-harness.js";
import "./doctor.fast-path-mocks.js";
vi.doUnmock("./doctor-sandbox.js");
let doctorCommand: typeof import("./doctor.js").doctorCommand;

View File

@@ -1,8 +1,11 @@
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { beforeAll, describe, expect, it } from "vitest";
import { beforeAll, describe, expect, it, vi } from "vitest";
import { createDoctorRuntime, mockDoctorConfigSnapshot, note } from "./doctor.e2e-harness.js";
import "./doctor.fast-path-mocks.js";
vi.doUnmock("./doctor-state-integrity.js");
let doctorCommand: typeof import("./doctor.js").doctorCommand;