feat: add Ekklesia doctor command
CI / verify (pull_request) Successful in 20s
CI / infrastructure-smoke (pull_request) Successful in 20s
CI / migration-smoke (pull_request) Successful in 25s

This commit is contained in:
ekklesia
2026-07-21 10:42:21 -05:00
parent f89d575dd4
commit 02ee3ccd80
18 changed files with 1546 additions and 7 deletions
+45
View File
@@ -0,0 +1,45 @@
import { describe, expect, it, vi } from "vitest";
const discoverModules = vi.fn();
const discoverModuleSchemas = vi.fn();
const discoverModuleMigrations = vi.fn();
const startModuleRuntime = vi.fn();
const createPostgresMigrationDatabase = vi.fn();
const planModuleMigrations = vi.fn();
vi.mock("../src/modules/index.js", async (importOriginal) => ({
...(await importOriginal<typeof import("../src/modules/index.js")>()),
discoverModuleMigrations,
discoverModules,
discoverModuleSchemas,
startModuleRuntime,
}));
vi.mock("../src/migrations/index.js", async (importOriginal) => ({
...(await importOriginal<typeof import("../src/migrations/index.js")>()),
createPostgresMigrationDatabase,
planModuleMigrations,
}));
describe("Doctor import safety", () => {
it("does not discover, connect, plan, or print when imported", async () => {
const log = vi.spyOn(console, "log").mockImplementation(() => undefined);
const error = vi.spyOn(console, "error").mockImplementation(() => undefined);
await import("../src/diagnostics/index.js");
await import("../src/cli/doctor.js");
await import("../src/index.js");
expect(discoverModules).not.toHaveBeenCalled();
expect(discoverModuleSchemas).not.toHaveBeenCalled();
expect(discoverModuleMigrations).not.toHaveBeenCalled();
expect(startModuleRuntime).not.toHaveBeenCalled();
expect(createPostgresMigrationDatabase).not.toHaveBeenCalled();
expect(planModuleMigrations).not.toHaveBeenCalled();
expect(log).not.toHaveBeenCalled();
expect(error).not.toHaveBeenCalled();
log.mockRestore();
error.mockRestore();
});
});