openclaw/test/scripts/bench-sqlite-state.test.ts
2026-07-13 22:12:21 -07:00

52 lines
1.8 KiB
TypeScript

// Bench SQLite State tests cover benchmark CLI argument safety.
import { spawnSync } from "node:child_process";
import { describe, expect, it } from "vitest";
import { parseSqliteStateBenchmarkCli } from "../../scripts/lib/sqlite-state-benchmark-cli.js";
function runBench(args: string[]) {
return spawnSync(
process.execPath,
["--import", "tsx", "scripts/bench-sqlite-state.ts", ...args],
{
cwd: process.cwd(),
encoding: "utf8",
},
);
}
describe("scripts/bench-sqlite-state", () => {
it("rejects unknown args before seeding benchmark databases", () => {
const result = runBench(["--wat"]);
expect(result.status).toBe(2);
expect(result.stdout).toBe("");
expect(result.stderr.trim()).toBe("error: Unknown argument: --wat");
});
it("rejects missing output values before seeding benchmark databases", () => {
expect(() => parseSqliteStateBenchmarkCli(["--output", "--profile", "smoke"])).toThrow(
"--output requires a value",
);
});
it("rejects short flag output values before seeding benchmark databases", () => {
expect(() => parseSqliteStateBenchmarkCli(["--output", "-h"])).toThrow(
"--output requires a value",
);
});
it("rejects invalid profiles without printing a stack trace", () => {
expect(() => parseSqliteStateBenchmarkCli(["--profile", "huge"])).toThrow(
'--profile must be one of smoke, default, large; got "huge"',
);
});
it("rejects duplicate single-value controls before seeding benchmark databases", () => {
expect(() =>
parseSqliteStateBenchmarkCli(["--profile", "smoke", "--profile", "large"]),
).toThrow("--profile was provided more than once");
expect(parseSqliteStateBenchmarkCli(["--help", "--profile", "huge"])).toEqual({
help: true,
});
});
});