- Auto-fix: import sorting, formatting (17 files) - Unsafe auto-fix: unused vars, template literals (7 files) - Manual: nursery/noConsole → suspicious/noConsole suppression - Manual: suppress noExcessiveCognitiveComplexity for cmdThreadResume and parseWorkflowPayload - Manual: remove unused destructured vars in current-role tests Closes #48
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { parseArgv } from "../src/run.js";
|
||||
|
||||
describe("parseArgv", () => {
|
||||
let exitSpy: ReturnType<typeof vi.spyOn>;
|
||||
let stderrSpy: ReturnType<typeof vi.spyOn>;
|
||||
let _stderrSpy: ReturnType<typeof vi.spyOn>;
|
||||
|
||||
beforeEach(() => {
|
||||
exitSpy = vi.spyOn(process, "exit").mockImplementation((() => {
|
||||
throw new Error("process.exit");
|
||||
}) as never);
|
||||
stderrSpy = vi.spyOn(process.stderr, "write").mockImplementation((() => true) as never);
|
||||
_stderrSpy = vi.spyOn(process.stderr, "write").mockImplementation((() => true) as never);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -17,22 +17,37 @@ describe("parseArgv", () => {
|
||||
});
|
||||
|
||||
it("returns threadId, role, prompt for valid argv", () => {
|
||||
const result = parseArgv(["node", "script", "--thread", "abc123", "--role", "developer", "--prompt", "do stuff"]);
|
||||
const result = parseArgv([
|
||||
"node",
|
||||
"script",
|
||||
"--thread",
|
||||
"abc123",
|
||||
"--role",
|
||||
"developer",
|
||||
"--prompt",
|
||||
"do stuff",
|
||||
]);
|
||||
expect(result).toEqual({ threadId: "abc123", role: "developer", prompt: "do stuff" });
|
||||
});
|
||||
|
||||
it("exits when --thread is missing", () => {
|
||||
expect(() => parseArgv(["node", "script", "--role", "dev", "--prompt", "x"])).toThrow("process.exit");
|
||||
expect(() => parseArgv(["node", "script", "--role", "dev", "--prompt", "x"])).toThrow(
|
||||
"process.exit",
|
||||
);
|
||||
expect(exitSpy).toHaveBeenCalledWith(1);
|
||||
});
|
||||
|
||||
it("exits when --role is missing", () => {
|
||||
expect(() => parseArgv(["node", "script", "--thread", "t1", "--prompt", "x"])).toThrow("process.exit");
|
||||
expect(() => parseArgv(["node", "script", "--thread", "t1", "--prompt", "x"])).toThrow(
|
||||
"process.exit",
|
||||
);
|
||||
expect(exitSpy).toHaveBeenCalledWith(1);
|
||||
});
|
||||
|
||||
it("exits when --prompt is missing", () => {
|
||||
expect(() => parseArgv(["node", "script", "--thread", "t1", "--role", "dev"])).toThrow("process.exit");
|
||||
expect(() => parseArgv(["node", "script", "--thread", "t1", "--role", "dev"])).toThrow(
|
||||
"process.exit",
|
||||
);
|
||||
expect(exitSpy).toHaveBeenCalledWith(1);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import { homedir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
resolveStorageRoot,
|
||||
getDefaultStorageRoot,
|
||||
getCasDir,
|
||||
getConfigPath,
|
||||
getDefaultStorageRoot,
|
||||
getEnvPath,
|
||||
getGlobalCasDir,
|
||||
normalizeWorkflowConfig,
|
||||
resolveStorageRoot,
|
||||
} from "../src/storage.js";
|
||||
|
||||
const VALID_CONFIG = {
|
||||
@@ -79,28 +79,33 @@ describe("normalizeWorkflowConfig", () => {
|
||||
});
|
||||
|
||||
it("throws when defaultAgent missing", () => {
|
||||
expect(() => normalizeWorkflowConfig({ ...VALID_CONFIG, defaultAgent: undefined }))
|
||||
.toThrow("defaultAgent and defaultModel");
|
||||
expect(() => normalizeWorkflowConfig({ ...VALID_CONFIG, defaultAgent: undefined })).toThrow(
|
||||
"defaultAgent and defaultModel",
|
||||
);
|
||||
});
|
||||
|
||||
it("throws when defaultModel missing", () => {
|
||||
expect(() => normalizeWorkflowConfig({ ...VALID_CONFIG, defaultModel: 42 }))
|
||||
.toThrow("defaultAgent and defaultModel");
|
||||
expect(() => normalizeWorkflowConfig({ ...VALID_CONFIG, defaultModel: 42 })).toThrow(
|
||||
"defaultAgent and defaultModel",
|
||||
);
|
||||
});
|
||||
|
||||
it("throws on invalid providers entry", () => {
|
||||
expect(() => normalizeWorkflowConfig({ ...VALID_CONFIG, providers: { bad: "string" } }))
|
||||
.toThrow("config.providers.bad must be a mapping");
|
||||
expect(() =>
|
||||
normalizeWorkflowConfig({ ...VALID_CONFIG, providers: { bad: "string" } }),
|
||||
).toThrow("config.providers.bad must be a mapping");
|
||||
});
|
||||
|
||||
it("throws on invalid models entry", () => {
|
||||
expect(() => normalizeWorkflowConfig({ ...VALID_CONFIG, models: { m: { provider: 123, name: "x" } } }))
|
||||
.toThrow("config.models.m requires provider and name");
|
||||
expect(() =>
|
||||
normalizeWorkflowConfig({ ...VALID_CONFIG, models: { m: { provider: 123, name: "x" } } }),
|
||||
).toThrow("config.models.m requires provider and name");
|
||||
});
|
||||
|
||||
it("throws on invalid agents entry", () => {
|
||||
expect(() => normalizeWorkflowConfig({ ...VALID_CONFIG, agents: "bad" }))
|
||||
.toThrow("config.agents must be a mapping");
|
||||
expect(() => normalizeWorkflowConfig({ ...VALID_CONFIG, agents: "bad" })).toThrow(
|
||||
"config.agents must be a mapping",
|
||||
);
|
||||
});
|
||||
|
||||
it("returns null for undefined modelOverrides", () => {
|
||||
|
||||
Reference in New Issue
Block a user