mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
c70aee247e
* refactor(scripts): migrate JavaScript tools to TypeScript * fix(ci): keep changed-scope preflight zero-install * fix(ci): preserve zero-install script owners * fix(ci): complete script migration follow-through * fix(release): keep stable closeout zero-install * fix(scripts): preserve standalone execution boundaries * fix(scripts): repair standalone loader boundaries * fix(scripts): normalize gateway observation ids * fix(scripts): keep Docker packager standalone * test(scripts): preserve rebase cleanup helpers * test(sessions): use tracked temp directory
76 lines
2.6 KiB
TypeScript
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.mts";
|
|
|
|
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,
|
|
});
|
|
});
|
|
});
|