Files
openclaw/test/scripts/plugin-sdk-declaration-budget.test.ts

76 lines
2.6 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
MAX_PRIVATE_QA_PUBLIC_PLUGIN_SDK_DECLARATION_BYTES,
MAX_PUBLIC_PLUGIN_SDK_DECLARATION_BYTES,
PLUGIN_SDK_DECLARATION_OUTPUT_VARIANCE_BYTES,
evaluatePluginSdkDeclarationBudget,
isPrivateQaPluginSdkBuild,
} from "../../scripts/lib/plugin-sdk-declaration-budget.mjs";
describe("plugin SDK declaration budget", () => {
it("selects private QA mode only for the explicit build flag", () => {
expect(isPrivateQaPluginSdkBuild({})).toBe(false);
expect(isPrivateQaPluginSdkBuild({ OPENCLAW_BUILD_PRIVATE_QA: "0" })).toBe(false);
expect(isPrivateQaPluginSdkBuild({ OPENCLAW_BUILD_PRIVATE_QA: "1" })).toBe(true);
});
it("enforces the publication budget at its exact boundary", () => {
const budgetBytes =
MAX_PUBLIC_PLUGIN_SDK_DECLARATION_BYTES + PLUGIN_SDK_DECLARATION_OUTPUT_VARIANCE_BYTES;
expect(
evaluatePluginSdkDeclarationBudget({
buildPrivateQa: false,
declarationBytes: budgetBytes,
}),
).toEqual({
budgetBytes,
budgetKind: "public",
ratchetBytes: MAX_PUBLIC_PLUGIN_SDK_DECLARATION_BYTES,
shouldFail: false,
varianceBytes: PLUGIN_SDK_DECLARATION_OUTPUT_VARIANCE_BYTES,
});
expect(
evaluatePluginSdkDeclarationBudget({
buildPrivateQa: false,
declarationBytes: budgetBytes + 1,
}),
).toEqual({
budgetBytes,
budgetKind: "public",
ratchetBytes: MAX_PUBLIC_PLUGIN_SDK_DECLARATION_BYTES,
shouldFail: true,
varianceBytes: PLUGIN_SDK_DECLARATION_OUTPUT_VARIANCE_BYTES,
});
});
it("tracks private-build public-entry chunk growth under a separate budget", () => {
const budgetBytes =
MAX_PRIVATE_QA_PUBLIC_PLUGIN_SDK_DECLARATION_BYTES +
PLUGIN_SDK_DECLARATION_OUTPUT_VARIANCE_BYTES;
expect(
evaluatePluginSdkDeclarationBudget({
buildPrivateQa: true,
declarationBytes: budgetBytes,
}),
).toEqual({
budgetBytes,
budgetKind: "private-qa-public-entry",
ratchetBytes: MAX_PRIVATE_QA_PUBLIC_PLUGIN_SDK_DECLARATION_BYTES,
shouldFail: false,
varianceBytes: PLUGIN_SDK_DECLARATION_OUTPUT_VARIANCE_BYTES,
});
expect(
evaluatePluginSdkDeclarationBudget({
buildPrivateQa: true,
declarationBytes: budgetBytes + 1,
}),
).toEqual({
budgetBytes,
budgetKind: "private-qa-public-entry",
ratchetBytes: MAX_PRIVATE_QA_PUBLIC_PLUGIN_SDK_DECLARATION_BYTES,
shouldFail: true,
varianceBytes: PLUGIN_SDK_DECLARATION_OUTPUT_VARIANCE_BYTES,
});
});
});