import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { describe, expect, test } from "vitest"; import { resolveSystemRunCommandRequest } from "./system-run-command.js"; type ContractFixture = { cases: ContractCase[]; }; type ContractCase = { name: string; command: string[]; rawCommand?: string; expected: { valid: boolean; displayCommand?: string; errorContains?: string; }; }; const fixturePath = path.resolve( path.dirname(fileURLToPath(import.meta.url)), "../../test/fixtures/system-run-command-contract.json", ); const fixture = JSON.parse(fs.readFileSync(fixturePath, "utf8")) as ContractFixture; describe("system-run command contract fixtures", () => { for (const entry of fixture.cases) { test(entry.name, () => { const result = resolveSystemRunCommandRequest({ command: entry.command, rawCommand: entry.rawCommand, }); if (!entry.expected.valid) { expect(result.ok).toBe(false); if (result.ok) { throw new Error("expected validation failure"); } if (entry.expected.errorContains) { expect(result.message).toContain(entry.expected.errorContains); } return; } expect(result.ok).toBe(true); if (!result.ok) { throw new Error(`unexpected validation failure: ${result.message}`); } expect(result.commandText).toBe(entry.expected.displayCommand); }); } });