import { existsSync, readdirSync } from "node:fs" ;
import { join } from "node:path" ;
import { describe, expect, it } from "vitest" ;
import { createChannelContractTestShards } from "../../scripts/lib/channel-contract-test-plan.mjs" ;
function listContractTests(rootDir = "src/channels/plugins/contracts" ): string[] {
if (!existsSync(rootDir)) {
return [];
}
return readdirSync(rootDir, { withFileTypes: true })
.filter((entry) => entry.isFile() && entry.name.endsWith(".test.ts" ))
.map((entry) => join(rootDir, entry.name).replaceAll("\\" , "/" ))
.toSorted((a, b) => a.localeCompare(b));
}
describe("scripts/lib/channel-contract-test-plan.mjs" , () => {
it("splits channel contracts into focused shards" , () => {
const suffixes = ["a" , "b" , "c" ];
expect(
createChannelContractTestShards().map((shard) => ({
checkName: shard.checkName,
runtime: shard.runtime,
task: shard.task,
})),
).toEqual(
suffixes.map((suffix) => ({
checkName: `checks-fast-contracts-channels-${suffix}`,
runtime: "node" ,
task: "contracts-channels" ,
})),
);
});
it("covers every channel contract test exactly once" , () => {
const actual = createChannelContractTestShards()
.flatMap((shard) => shard.includePatterns)
.toSorted((a, b) => a.localeCompare(b));
expect(actual).toEqual(listContractTests());
expect(new Set(actual).size).toBe(actual.length);
});
it("keeps registry-backed surface shards spread across checks" , () => {
for (const shard of createChannelContractTestShards()) {
const surfaceRegistryFiles = shard.includePatterns.filter((pattern) =>
pattern.includes("/surfaces-only.registry-backed-shard-" ),
);
expect(surfaceRegistryFiles.length).toBeLessThanOrEqual(4 );
}
});
});
Messung V0.5 in Prozent C=98 H=97 G=97
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland