mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-18 12:15:09 +00:00
52 lines
1.8 KiB
TypeScript
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,
|
|
});
|
|
});
|
|
});
|