Files
proxycast/scripts/check-rust-layer-budget.test.mjs
T
2026-07-05 02:05:56 +08:00

97 lines
2.2 KiB
JavaScript

import { describe, expect, it } from "vitest";
import {
evaluateRustLayerBudget,
parseArgs,
renderBudgetResultText,
} from "./check-rust-layer-budget.mjs";
function buildReport({ e2eEntries = [] } = {}) {
return {
layers: {
e2e: {
runnableByDefault: e2eEntries.length,
},
},
entries: [
...e2eEntries,
{
file: "lime-rs/crates/agent/tests/real_web_search.rs",
layer: "e2e",
packageName: "lime-agent",
liveGated: true,
runnableByDefault: false,
},
],
};
}
describe("check-rust-layer-budget", () => {
it("应解析 Rust layer 预算参数", () => {
expect(parseArgs(["--max-e2e-runnable", "0", "--json"])).toMatchObject({
json: true,
maxE2eRunnable: 0,
});
});
it("应在 e2e 测试全部 ignore 时通过", () => {
expect(evaluateRustLayerBudget(buildReport())).toMatchObject({
ok: true,
e2eRunnable: 0,
});
});
it("允许 unit 文件同时包含普通单测和 ignored live 测试", () => {
const result = evaluateRustLayerBudget({
layers: {
e2e: {
runnableByDefault: 0,
},
},
entries: [
{
file: "lime-rs/src/services/skill_cmd.rs",
layer: "unit",
packageName: "lime",
cargoScope: "workspace",
testCount: 3,
ignoredCount: 1,
liveGated: true,
runnableByDefault: true,
},
],
});
expect(result).toMatchObject({
ok: true,
e2eRunnable: 0,
});
});
it("应在 e2e 文件存在非 ignore 测试时失败并输出文件", () => {
const result = evaluateRustLayerBudget(
buildReport({
e2eEntries: [
{
file: "lime-rs/crates/agent/tests/live_provider.rs",
layer: "e2e",
packageName: "lime-agent",
cargoScope: "workspace",
testCount: 2,
ignoredCount: 1,
liveGated: true,
},
],
}),
);
expect(result).toMatchObject({
ok: false,
e2eOverBudgetBy: 1,
});
expect(renderBudgetResultText(result)).toContain(
"- lime-rs/crates/agent/tests/live_provider.rs (lime-agent, runnable tests=1)",
);
});
});